使用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);
});
谢谢。
答案 0 :(得分:0)
尝试使用try{}catch
,并在每个承诺上使用RSVP的错误处理程序而不是整个东西。当前的处理程序集仅检查'allSettled'是否有错误。
这篇博文非常好地解释了承诺: