【问题标题】:Default error function for jQuery promise?jQuery Promise 的默认错误函数?
【发布时间】:2013-08-28 01:23:47
【问题描述】:

有没有办法为 jQuery 承诺设置默认错误函数?

我有一个异步执行的函数链,如果其中任何一个失败,我想报告错误。这是我现在必须做的:

function myErrorFunc() {
  // report error
}

doSomething.then(doSomething2(), myErrorFunc).then(doSomething3(), myErrorFunc).then( ... )

我希望在某个地方设置默认错误函数,然后调用

doSomething.then(doSomething2()).then(doSomething3()).then( ... );

可能吗?

【问题讨论】:

    标签: javascript jquery promise


    【解决方案1】:

    错误通过承诺链传播。

    你可以简单地写

    promise.then(a).then(b).then(c).then(null, onError)
    

    【讨论】:

      【解决方案2】:

      在我接受了别人的回答后,我找到了一个更好的:

      function myWrapperFunction() {
          return doSomething().fail(myErrorFunction());
      }
      

      现在我所要做的就是调用myWrapperFunction().then(),错误功能就到位了。

      【讨论】:

      • 请注意,即使出现错误,这也会执行调用者的回调,这可能是您不想要的。
      • myErrorFunction() 你刚刚立即调用了处理程序。
      【解决方案3】:

      使用自定义原型更新默认错误函数

      function NewError(message) {
        this.name = "NewError";
      this.message = (message || "");
      }
       NewError.prototype = Error.prototype;
      

      【讨论】:

      • 这根本不是他想要的。
      猜你喜欢
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多