调试承诺的最佳方式是并行运行
Best way to debug promises running in parallel
Am使用nodejs+express开发应用程序的后端,并使用RSVP进行promise。
问题:每当函数中出现意外的错误或异常时,执行就会被卡住。有什么方法可以找到哪个函数有错误吗。
代码如下:
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);
});
谢谢。
尝试使用try{}catch
,并在每个promise上使用RSVP的错误处理程序,而不是整个promise。当前处理程序集仅检查"allSettled"是否存在错误afaik。
这篇博客文章很好地解释了承诺:
如何使用Promises
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何使用JS/nightwatchjs并行运行多个测试
- Mongodb数千个并行运行的查询
- 如何在并行选项卡中运行彗星聊天
- 如何一个接一个地运行javascript超时,而不是并行运行
- 并行运行 npm 任务
- 节点服务器和 WS 服务器并行运行
- 并行运行异步任务
- 如果一个并行函数已经失败,阻止该函数继续运行(使用jQuery $.when())
- 如何从调用堆栈中删除函数并并行运行它
- 两个并行运行的异步函数都完成执行的Catch时刻
- 并行运行承诺,但单独处理拒绝
- 不能并行运行Selenium PhantomJS实例
- 如何并行运行所有功能
- 调试承诺的最佳方式是并行运行
- 停止并行运行的异步任务
- 并行执行多个AJAX请求,并在所有请求完成后运行一个函数
- 并行运行异步代码
- 多个Javascript并行运行