javascript - 从 Promise.all 返回不会从包装函数返回

标签 javascript node.js promise

如果 Promise.all 解析后满足某些条件,我想从函数返回。但return语句似乎没有效果,函数继续执行。

这是我的代码:

function somefunc() {

    Promise.all([match2, match3, match4, match5]).then(results => {
        console.log(results);
        if(results.indexOf(false) > -1) {
            return; // has no effect. somefunc() does NOT return. 
        }
        else {
            // ............
        };

    }).catch(err => {
      console.log(err);
    });

    // this continues to get executed even after the return staement
}

最佳答案

如果您希望返回 Promise 链中的某些内容,则必须返回 Promise.all:

function somefunc() {

    return Promise.all([match2, match3, match4, match5]).then(results => {
        console.log(results);
        if(results.indexOf(false) > -1) {
            return; // has an effect. somefunc() will return. 
        }
        else {
            // ............
        };

    }).catch(err => {
      console.log(err);
    });

    // this will not get executed after the return staement
}

关于javascript - 从 Promise.all 返回不会从包装函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074481/

相关文章:

javascript - NodeJS : Chain functions automatically in a promise?

javascript - 单击此子项中的链接添加关闭功能

javascript - 使用 firebase 在快照 forEach 之后调用函数

javascript - 如何使用正则表达式获取此处的日期?

Node.js HTTP2 服务器错误 : socket hang up

javascript - javascript node.js 中的自动 mimetypes

node.js - 与 Mongoose 相比,MongoDB 原生 Node.js 驱动程序的性能很糟糕,我做错了什么?

javascript - ionic 。如何使用存储并获得真实结果

javascript - 如果失败,如何继续使用 jQuery ajax 调用 API 直到 3 次?

javascript - 一个浏览器窗口中有两个 Web 应用程序 - 一个不需要刷新,而第二个需要刷新