我有一系列的承诺,我使用catch捕获错误。
var {Cu} = require("chrome");
var{ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", null);
如果链完成没有拒绝,会调用什么函数? 我终于使用了,但是如果发生错误也会调用它。 我想在catch函数之后调用一个函数,只有在没有承诺被拒绝时才调用它。
我将node.js与q - module一起使用。
答案 0 :(得分:5)
添加另一个就可以了。
this.load()
.then(self.initialize)
.then(self.close)
.then(function() {
//Will be called if nothing is rejected
//for sending response or so
})
.catch(function(error){
//error-handling
})
答案 1 :(得分:3)
我会将您的.catch()
更改为.then()
并同时提供onFullfill和onRejected处理程序。然后你可以准确地确定发生了哪一个,你的代码非常清楚,一个或另一个将执行。
this.load()
.then(self.initialize)
.then(self.close)
.then(function() {
// success handling
}, function(error){
//error-handling
});
仅供参考,这不是做事的唯一方法。您也可以使用.then(fn1).catch(fn2)
,它类似地根据承诺状态先前的内容调用fn1或fn2,除非如果fn1返回被拒绝的承诺或者引发异常,则两者都可以被调用,因为这也将由fn2处理。 / p>