【发布时间】:2015-09-21 02:58:03
【问题描述】:
我正在使用 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);
});
谢谢。
【问题讨论】:
-
呃,那里发生了什么或者是否有意外的异常似乎并不重要 - 你的承诺总是卡住了?你永远不会解决或拒绝他们!
-
如果那些
common方法是异步的,为什么它们不返回承诺? -
谢谢 Bergi... 我错过了导致 Web 服务调用永不返回的方法之一中的拒绝/履行。但我仍然怀疑,如果某个特定函数的返回时间过长,可能是因为长时间运行的数据库查询,那么我如何知道传递给 RSVP 的所有函数中的哪个函数导致了延迟。检查这个的最优雅的方法是什么?
-
你可以给他们每个人一个超时时间,当它没有满足时报告
标签: javascript node.js rsvp.js rsvp-promise