var arr = [1,2 ,3, 4, 5, 6, 67, 8, 10];
function f1 () {
return arr.map(function (member) {
console.log(member);
return Promise.resolve(member + 2).then((result) => {return result + 2}).then
(value => {return value + 1});
});
}
console.log(f1());
每个索引的输出都是Promise { <pending> }
的数组。有什么问题?我认为最后return value + 1
解决了承诺,为什么我要等待?
答案 0 :(得分:3)
代码没有问题,预计会发生什么。
我认为最后的
return value + 1
解决了承诺
不,它不是return
本身,它是then
功能,它将使用回调函数的返回值来解析promise。
不,它还没有解决承诺,将解决未来的承诺 。 then
回调总是异步调用。
那我为什么要等待?
因为在您登录时仍处于待处理状态;他们会在事后立即解决。
如果要记录结果数组,请使用
Promise.all(f1()).then(console.log);
答案 1 :(得分:0)
你正在返回一系列的承诺,所以你需要它们,就像这样:
f1().map(x => x.then(console.log));
答案 2 :(得分:0)
预计会从您的代码中获得。
您正在从.map
返回一个数组,在其中您为每个项目返回一个Promise。
如果您想获取该值,则可以返回Promise.all(your_array_promise)
。