我注意到,如果.then()由于任何错误(例如,对未定义变量的操作)而导致回调失败并且没有.catch()关联,则错误将被忽略。
在开发过程中这非常不舒服。
例如,此代码将退出而不会显示任何错误:
var Q = require('q');
var promise = Q('something');
promise
.then(function() {
buggyCode();
})
Run Code Online (Sandbox Code Playgroud)
可能的解决方法是手动添加一个像这样的错误处理程序,但是那没有内置的功能吗?
.catch(function(error) {
console.error(error.stack);
})
Run Code Online (Sandbox Code Playgroud)
为了使错误处理更加详细,有一个方法.done(),应该在所有其他处理程序之后调用它并执行错误报告,类似于我在问题中发布的代码片段。
这并不完美,因为它需要调用每个承诺消费者函数才能.done()使此检查起作用。