Node.js 使用q.js时如何获取异常信息
下面的代码在没有异常的情况下运行良好,如果函数栏中出现异常,则程序刚刚完成,没有任何输出。我检查了Q的源代码,它捕获异常并拒绝它。花了一些时间,但仍然不知道获取异常信息的正确方法Node.js 使用q.js时如何获取异常信息,node.js,q,Node.js,Q,下面的代码在没有异常的情况下运行良好,如果函数栏中出现异常,则程序刚刚完成,没有任何输出。我检查了Q的源代码,它捕获异常并拒绝它。花了一些时间,但仍然不知道获取异常信息的正确方法 function foo(val) { var deferred = Q.defer(); if (val) { deferred.resolve(val); } else { deferred.reject(val); } return def
function foo(val) {
var deferred = Q.defer();
if (val) {
deferred.resolve(val);
} else {
deferred.reject(val);
}
return deferred.promise;
}
function bar() {
var deferred = Q.defer();
foo(true)
.then(function(res) {
throw new Error('true error!');
deferred.resolve(true);
}, function(err) {
throw new Error('false error!');
deferred.reject(false);
});
return deferred.promise;
}
bar()
.then(function(res) {
console.log('true');
}, function(err) {
console.log('false');
})
.done();
首先,你从酒吧返回的承诺永远不会得到解决或拒绝。你所做的只是在第一行创建它,不做任何事情,然后在最后一行返回它的承诺 假设您是这样修复的: 现在,在代码的末尾,您仍然在查找错误,但这些错误并没有被触发。打电话的时候。比我们第一次的承诺,一个新的承诺会被回复。想想“then”就是在之前的承诺的基础上创造一个新的承诺。 这样修复它将给我们在“then”承诺中抛出的异常,因为在then处理程序中抛出的异常被用作拒绝值。 看看:
这张支票和你的相似,谢谢。我的意图不是抛出异常,而是检测由其他api抛出的异常。
function bar() {
var promise = foo(true);
function bar() {
return foo(true).then(function(res) {....