我正在尝试使用async await在map函数中了解Promise.all,但我似乎返回的是未决的Promise,我不明白为什么
这是我有一个.then解决我的诺言时的工作代码
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将功能包装在async功能中,并等待promise.all
const results = async () => await Promise.all(arr.map(async (item) => {
return item + 1;
}));
console.log(results())
但我似乎总是登录Promise { <pending> }
,我不明白自己在做什么错
答案 0 :(得分:2)
使用asnyc
/ await
不会使results
函数同步。 (它的字面标记为async
!)因此它返回一个Promise,在记录值之前,您必须await
进行此操作:
const arr = [1, 2, 3];
const results = Promise.all(
arr.map(async item => item + 1)
);
(async () => {
console.log(await results)
})();
答案 1 :(得分:1)
您正在做的就是为结果分配一个异步函数,这不是等待异步函数的工作方式。您需要为结果分配一个承诺,并避免import random
openfile= open('example.txt', 'r')
monthData = openfile.readlines()
openfile.close
dictionary = {}
for line in monthData:
rNum = random.randrange(1,11)
info = line.split(',')
key = info[0], rNum
value = info[1:]
for i in range(len(value)):
value[i] = int(value[i])
dictionary[key] = value
print(dictionary)
回调链,我们可以使用then
来获得响应。
async/await