在我的情況下有什么方法可以使用 Promise.all 嗎?我應該使用兩個不同的回圈(一個推送一系列承諾,另一個將每個結果推送到正確的位置)?
(這只是一個例子,我當前的代碼包含更多的資料,所以使用 Promise.all 看起來很有趣,因為請求是相互獨立的)
const myFunction = async ()=>{
let someData=[{ID:55,name:'name1',firstname:'fname1',address:'address1'},
{ID:26,name:'name2',firstname:'fname2',address:'address2'},
{ID:88,name:'name3',firstname:'fname3',address:'address3'}]
for (let i = 0; i < someData.length; i ) {
someData[i].country = await getCountryFromDatabase(someData[i].ID)
}
}
謝謝
uj5u.com熱心網友回復:
將陣列映射到 Promise 陣列,使用對映射回呼中物件的參考在 API 呼叫完成后對其進行變異。
let someData = [{ ID: 55, name: 'name1', firstname: 'fname1', address: 'address1' },
{ ID: 26, name: 'name2', firstname: 'fname2', address: 'address2' },
{ ID: 88, name: 'name3', firstname: 'fname3', address: 'address3' }]
await Promise.all(
someData.map(obj => (
getCountryFromDatabase(obj.ID).then((country) => {
obj.country = country;
})
))
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462974.html
標籤:javascript 节点.js for循环 承诺.all
上一篇:Rn次相乘
