javascript – 在Array#map()中异步/等待
作者:互联网
我用这段代码得到编译时错误:
const someFunction = async (myArray) => {
return myArray.map(myValue => {
return {
id: "my_id",
myValue: await service.getByValue(myValue);
}
});
};
错误信息是:
await is a reserved word
为什么我不能这样使用它?
我也尝试了另一种方式,但它给了我同样的错误:
const someFunction = async (myArray) => {
return myArray.map(myValue => {
const myNewValue = await service.getByValue(myValue);
return {
id: "my_id",
myValue: myNewValue
}
});
};
解决方法:
您无法按照您的想象执行此操作,因为如果它不直接位于异步函数内,则无法使用等待.
这里明智的做法是将函数传递给map异步.这意味着map将返回一个promises数组.然后我们可以使用Promise.all在所有promise返回时获得结果.由于Promise.all本身返回一个promise,外部函数不需要是异步的.
const someFunction = (myArray) => {
const promises = myArray.map(async (myValue) => {
return {
id: "my_id",
myValue: await service.getByValue(myValue)
}
});
return Promise.all(promises);
}
标签:ecmascript-2017,javascript,async-await 来源: https://codeday.me/bug/20190926/1821982.html