javascript - 是否可以通过使用 Promise.resolve 返回结果来在 promise 中使用 map/filter/reduce?

标签 javascript node.js promise

我目前正在做的是在 promise 中进行循环,如下所示:

asyncFunc()
.then(() => {
   return new Promise((resolve) => {
        for (let i = 0;  i < length; i++) {
        // do something
            if (j == length - 1) {
                return resolve(result);
            }
        }
    })
.then((result) => {
    console.log("This shows after the loop above is done");
    console.log(result);
});

我正在考虑通过使用 map/filter/reduce 以更简洁的方式替换它,而不是用这个替换 for 循环:

return new Promise((resolve) => {
    let result = some_list.filter((item) => {
        return item.count > 2;
    })
    return resolve(result);
})

这可行吗?还是我应该坚持使用 for 循环?

我最近阅读了有关混契约(Contract)步代码和异步代码的文章,但还没有找到如何将它们与 promises 混合的解决方案。

最佳答案

是的,这是非常合理的代码。你甚至可以把它写成:

return new Promise((resolve) => {
    resolve(some_list.filter((item) => {
        return item.count > 2;
    }));
});

关于javascript - 是否可以通过使用 Promise.resolve 返回结果来在 promise 中使用 map/filter/reduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46843921/

相关文章:

javascript - 链接 promise 链

javascript - 为什么内置函数没有原型(prototype)属性?

javascript - 如何防止 Canvas 在移动设备上表现得像图像?

javascript - 无法在 Node.js 中使用 ECDH 私钥签署缓冲区

node.js - 跨多个服务器持久化websocket连接对象

javascript - 有没有一个函数可以测试一个在js中有回调的对象实例?

javascript - 如何编写查找父子的递归方法

javascript - 使用 Knockout.js 计算数组中的实例数

ruby-on-rails - 在 Heroku 上使用 Rails API 部署 Create-React-App

javascript - 在 express.js 启动之前运行异步函数