获得一系列未决承诺

时间:2017-01-03 08:16:31

标签: javascript node.js

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解决了承诺,为什么我要等待?

3 个答案:

答案 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)