Javascript 异步等待承诺。所有映射不解析承诺

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

我试图理解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,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
的全部目的是强制函数返回一个承诺,因此它的返回值确实是一个承诺就不足为奇了!