async await結合forEach使用注意

2022-05-10 12:35:10 字數 1020 閱讀 4983

場景:對乙個物件或者陣列遍歷,其中乙個值滿足條件時請求介面,得到資料後進行後續**操作

1.foreach**函式直接結合async await使用,並不能將迴圈中的非同步請求轉為同步,得不到正常結果

object.keys(propsaccountinfo).foreach(async (v) =>

});

2.改用for迴圈,能正常得到結果

for (let i = 0; i < object.keys(propsaccountinfo).length; i++) }//

上面**非同步請求介面以後再帶入資料

object.keys(propsaccountinfo).foreach((v) =>);

原因分析:

for:

const report = async () =>

};

foreach

const report = async () =>);

};//

相當於:

const report = async () =>;

for (let i = 0, len = arr.length; i < len; i++)

};

第乙個for迴圈的 asyncfn 要await返回後才繼續執行,所以是順序執行,而第二個的 asyncfnwrap 不會阻塞迴圈。

實際上還是foreach內部實現不支援await的問題:

array.prototype.foreach = function

(callback)

}

擴充套件一下

array.prototype.foreachasync = async function

(fn)

}array.prototype.foreachasyncparallel = async function

(fn)

async await結合axios使用

async 和 await是es7的語法 async和await必須結合使用,有await必須要使用async,有async不一定要使用await,await是將非同步轉為同步 用async修飾的事件,如果有retrun返回,則返回的是promise物件 async修飾的非同步事件a,在其他方法b中...

async await,實現同步

作為一名初學者,對於 而言,自然是對比於之前學過的知識,這樣才能判斷意義 對於promise了解不深入,但也稍微記錄,加深自我的印象。作為新特性來說,功能必然更好,就對比之前ajax來說,promise能夠將非同步轉為同步。如 async function ajaxtest url return n...

使用async await 總結

async await 迴圈並行處理 同步 同一執行緒之中,順序完成不同的操作,是一種阻塞模式 後乙個請求操作需要等待前乙個操作完成之後,才能發出。非同步 需要開啟不同的執行緒,是非阻塞模式。同步類似於打 而非同步相當於發簡訊。傳送請求獲取天氣非同步操作,利用node fetch完成請求 const...