如何在循环Javascript中处理异步/等待功能

时间:2019-05-03 04:31:17

标签: async-await

function是async,使用它时,我在函数前面写了await。 在我的代码中获取函数结果时,它在for循环中进行了处理。 它可以从函数中获取结果,但是转义循环不起作用。

函数的返回类型为Promise,因此,当它返回resolved时,将处理then并返回重新赋值。但是,出乎我的意料

退出循环(退出)时无法得到结果。

let IDBFindingCarryingAddress = async(st, et)=>{
    let CarryingAddrTx = [], CarryingAddr= [];
    CarryingAddr = await SearchCarryingAddress(st, et);
    if(CarryingAddr!=-1){
        for(let i in CarryingAddr){
            let addr = await CarryingAddressTx(CarryingAddr[i], et); 
            CarryingAddrTx.push(...addr);
        }
            console.log('CarryingAddrTx : '+CarryingAddrTx+' ');
            for(let i in CarryingAddrTx){
                await InsertCarryingAddress(CarryingAddrTx[i][0], CarryingAddrTx[i][1], CarryingAddrTx[i][2], CarryingAddrTx[i][3]);
            }

    }
}

问题是

  for(let i in CarryingAddr){
            let addr = await CarryingAddressTx(CarryingAddr[i], et); 
            CarryingAddrTx.push(...addr);
   }

它在循环内工作 然后,

console.log('CarryingAddrTx : '+CarryingAddrTx+' ');

它不起作用。我对await CarryingAddressTx function()表示怀疑。 await function删除后,它可以工作。

所以,最初 我希望这样。

Output
-----------------------------------------
CarryingAddrTx : 0x_____________________, 
CarryingAddrTx : 0x_____________________,
CarryingAddrTx : 0x_____________________, 
...

但是,什么也不打印。

谢谢。

0 个答案:

没有答案