[英]modify array after promise.all in foreach loop
我有這樣的數組
let result = [{id:1,name:'test',dealValue:'ds',dealType:2},{id:2,name:'test1',dealValue:'ds',dealType:4}];
我正在循環上述數組以調用另一個函數,這也是每次迭代后的承諾,我需要將該值添加為當前數組中的新項。
let temp = [];
result.forEach((element, index) => {
//build the promise
temp.push(getAmount(element.dealValue, element.dealType));
});
//execute array of promise
let r = await Promise.all(temp);
//add new key value pair
result.forEach((element, index) => {
element.IDGfee = r[index];
});
這工作正常,但是,我正在運行兩個foreach
循環以達到我想要的結果,有沒有更好的方法呢?
您可以改用.map
,然后將其分配回getAmount
內的element
.then
鏈接到getAmount
調用上:
await Promise.all(
result.map((element) => (
getAmount(element.dealValue, element.dealType)
.then((result) => {
element.IDGfee = result;
})
))
);
(但是,正如注釋所指出的那樣,在分配給每個element
之前,這不會等待每個響應都返回-如果有任何請求拋出錯誤,則當前的代碼將在分配之前拋出,而在分配了某些屬性之后,這很可能會拋出。 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.