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
最后解决了 promise ,那么为什么我要等待?
最佳答案
代码没有问题,会发生什么。
I thought the
return value + 1
at the end resolved the promises
不,不是 return
本身,而是 then
功能将使用回调函数的返回值解析 promise。
不,它还没有解决 promise ,它将解决 promise 在未来。 then
回调总是被异步调用。
so why am I getting pending?
因为当您记录它们时它们仍然处于待处理状态;他们将在之后立即得到解决。
如果你想记录一组结果,使用
Promise.all(f1()).then(console.log);
关于javascript - 获取一系列待处理的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439086/