调试并行运行的promises的最佳方法

时间:2015-07-03 09:57:27

标签: javascript node.js rsvp.js rsvp-promise

使用nodejs + express开发应用程序的后端并使用RSVP进行承诺。

问题:每当其中一个函数出现错误或异常时,执行就会被卡住。有什么方法可以找到哪个函数有错误。

代码如下所示:

    function checkifvalid_call() {
        return new RSVP.Promise(function(fulfil, reject) {
            common.checkifvalid(test, function(isValid) {
                if (isValid === false) {
                    logger.fatal("Not valid test....sending invalid result")
                    res.send({
                        "Error": "Invalid test"
                    });
                }
            });
        });
    }


    function secondtest_call() {
        return new RSVP.Promise(function(fulfil, reject) {
            common.secondtest(test, function(isValid) {
                if (isValid === false) {
                    logger.fatal("Not valid second test....sending invalid result")
                    res.send({
                        "Error": "Invalid second test"
                    });
                }
            });
        });
    }

    RSVP.allSettled([checkifvalid_call(), secondtest_call()]).then(function(ret_array) {
        console.log("Calls finished");
        logger.debug("sending result..............")
        res.send("success);
    }).catch(function(reason) {
        logger.debug("Exception encountered : " + reason);
    }).finally(function() {
        logger.debug("All done finally")
    });

    RSVP.on('error', function(reason) {
        console.assert(false, reason);
    });

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用try{}catch,并在每个承诺上使用RSVP的错误处理程序而不是整个东西。当前的处理程序集仅检查'allSettled'是否有错误。

这篇博文非常好地解释了承诺:

How To Use Promises