我有一个执行承诺并等待响应的do..while循环。当响应为“正在处理”或“已接收”时,循环需要继续。但是,Promise中有一个setTimeout函数。
这里的目标是respo = await promise1.then(resp => resp)在do..while循环的“ do”语句中的函数2秒钟后才被调用。这仅仅是为了允许我正在使用的API完成其工作。
当前发生的情况是setTimeout被调用一次,并且循环几乎立即立即重复相同的响应,这表明2秒钟的中断不起作用。
我究竟做错了什么?
const promise1 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(tasks(resStatus.data.task.id, tokenTenant))
}, 2000);
})
do {
respo = await promise1
console.log(respo.data)
} while (respo.data.status === "Processing" || respo.data.status === "Received");
。。。
对于好奇者的一些示例响应(已解决问题):
ALL SYSTEMS GO!
{ id: 'd23b2cf3-02c3-48fe-9479-1407238d41d9',
status: 'Received',
result: null,
tenant_id: 'eaa55f40-93fa',
creation_time: '2019-04-25T18:19:47+0000' }
****...some results omitted for brievety...****
{ id: 'd23b2cf3-02c3-48fe-9479-1407238d41d9',
status: 'Processing',
result: null,
tenant_id: 'eaa55f40-93fa',
creation_time: '2019-04-25T18:19:47+0000' }
{ id: 'd23b2cf3-02c3-48fe-9479-1407238d41d9',
status: 'Failed',
result: { Reason: '[Errno 22] Invalid argument' },
tenant_id: 'eaa55f40-93fa',
creation_time: '2019-04-25T18:19:47+0000' }
呼如林
相关分类