javascript - 获取一系列待处理的 promise

标签 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最后解决了 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/

相关文章:

javascript - 如何清除所有同名的单选按钮。我想将名称作为变量传递

javascript - 为什么我会在我的 React 组件中收到意外标记?

javascript - Vue.js 从模板中分离样式

c# - asp.net 使用 Jquery 调用异步 webMethod

javascript - 检索用户的帖子?

javascript - 将响应缓冲区转换为 JSON

javascript - 使用 reactJs 和 NodeJs 发出 http post 请求

mysql - 如何将Nodejs的输入存储到数据库

javascript - 解决在chrome中运行的tensorflow js的 "Uncaught (in promise) TypeError: fs.writeFile is not a function"的替代方法

javascript - 如何在 Thenable 对象中正确返回 'this'?