Javascript 异步等待承诺。所有映射不解析承诺
我试图理解Promise.all在使用async Wait的映射函数中的作用,但我似乎返回了挂起的承诺,我不明白为什么 这是我的工作代码,当我有一个。然后解决我的承诺Javascript 异步等待承诺。所有映射不解析承诺,javascript,node.js,promise,async-await,Javascript,Node.js,Promise,Async Await,我试图理解Promise.all在使用async Wait的映射函数中的作用,但我似乎返回了挂起的承诺,我不明白为什么 这是我的工作代码,当我有一个。然后解决我的承诺 const arr = [1, 2, 3, 4, 5]; const results = Promise.all(arr.map( item => { return item + 1; })); results.then(result=> console.log(result)) 哪个日志与预期一致=[2
const arr = [1, 2, 3, 4, 5];
const results = Promise.all(arr.map( item => {
return item + 1;
}));
results.then(result=> console.log(result))
哪个日志与预期一致=[2,3,4,5,6]
现在要使用async await实现函数,我知道我需要使用关键字async和await for promise.all将函数包装在一个异步函数中
const results = async () => await Promise.all(arr.map(async (item) => {
return item + 1;
}));
console.log(results())
但我似乎总是记录
承诺{}
我不明白我做错了什么使用asnyc
/等待
不会使结果
功能同步。(它字面上被标记为async
!)因此它返回一个承诺,您必须等待在记录值之前:
const arr=[1,2,3];
const results=Promise.all(
arr.map(异步项=>item+1)
);
(异步()=>{
日志(等待结果)
})();代码>您所做的是为结果分配一个异步函数,而不是等待异步函数的工作方式。您需要为结果指定一个承诺,并避免然后
回调链接,我们可以使用async/await
获得响应
const arr=[1,2,3];
const results=Promise.all(arr.map)(异步(项)=>{
退货项目+1;
}));
异步函数输出(){
日志(等待结果);
}
输出()代码>与前面提到的其他答案一样,async返回一个承诺。这就是你得到的原因
Promise { <pending> }
不能将async与那样的映射一起使用。对不起,我在打电话,所以。。明天我可能会给你一个解决方案。我以前偶然发现了这个问题,并修复了它。您必须等待结果console.log(await results())
您实际上没有在这里执行任何异步操作,因此不需要承诺或async/await
。但基本上,async
的全部目的是强制函数返回一个承诺,因此它的返回值确实是一个承诺就不足为奇了!