我需要设置一个对象数组,但是它的属性需要来自异步函数。
对于我这样做,我在数组上运行.map()
,并对每个元素做我需要做的任何事情,但是我需要async函数的结果。
我正在做的方式现在我得到PromiseStatus
和PromiseValue
作为我的结果,这不是我想要的。我基本上只想在我的数组中使用PromiseValue
。
这是我目前的代码:
function processMyArray (array) {
const processedArray = array.map(x => {
return myAsyncFunction(x)
.then((result) => {
const { attribute1, attribute2 } = result
return {
attribute1,
attribute2
}
})
})
return processedArray
}
// the rough code for myAsyncFunction()
myAsyncFunction (data) {
return Promise.all(
[
this.getAttribute1(data),
this.getAttribute2(data)
]
)
.then(([attribute1, attribute2]) => {
return {
attribute1, attribute2
}
})
}
答案 0 :(得分:1)
将映射包装到
中Promise.all(array.map(...))
或使用酷ES 7的东西(等待for循环):
async function processMyArray (array) {
const result = [];
for(const x of array){ //x is a bad name by the way
const { attribute1, attribute2 } = await myAsyncFunction(x);
result.push({ attribute1, attribute2 });
}
return result;
}