如果没有拒绝承诺连锁结果

时间:2015-09-21 07:43:55

标签: javascript node.js promise angular-promise

我有一系列的承诺,我使用catch捕获错误。

var {Cu} = require("chrome");
var{ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", null);

如果链完成没有拒绝,会调用什么函数? 我终于使用了,但是如果发生错误也会调用它。 我想在catch函数之后调用一个函数,只有在没有承诺被拒绝时才调用它。

我将node.js与q - module一起使用。

2 个答案:

答案 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>