【发布时间】:2020-01-07 14:53:48
【问题描述】:
我对下面的代码有点困惑。
let bookingID
result = await Promise.all(result.map(async (item) => {
bookingID = item.id;
console.log('###############################');
AData = await book.fetchA(bookingID);
console.log(bookingID);
BData = await book.fetchB(bookingID);
console.log('==============================');
return {
'AData ': AData ,
'BData ': BData ,
'id': bookingID
};
}));
我在控制台中得到的是:(注意。id 是相同的。始终是最后一个)
###############################
###############################
2918849262429175808
2918849262429175808
==============================
==============================
循环逻辑似乎有问题,输出应该是
###############################
2918849262429175807
==============================
###############################
2918849262429175808
==============================
但是如果我把console.log的顺序改成
console.log('###############################');
console.log(bookingID);
AData = await book.fetchA(bookingID);
BData = await book.fetchB(bookingID);
console.log('==============================');
输出是(注意,id 不同)
###############################
2918849262429175807
###############################
2918849262429175808
==============================
==============================
我完全糊涂了。 8-(
只要找一件有趣的事。当我使用 console.log(item.id) 而不是 console.log(bookingID) 时,它可以获得正确的 id 结果。 “bookingID = item.id”是怎么回事?为什么 console.log(bookingID) 在 AData = await book.fetchA(bookingID) 之后总是得到相同的 id?
【问题讨论】:
标签: node.js promise async-await