【问题标题】:Capture 3rd param output of $.deferred in a .fail situation在 .fail 情况下捕获 $.deferred 的第三个参数输出
【发布时间】:2015-09-22 22:13:41
【问题描述】:

我正在使用此代码来捕获 jsonp 错误,它工作得很好,但当它被这样调用时就不行了。

this.promise = this.model.fetch();
.
.
.
.fail(_.bind(function(collection, response, options) {
   console.log('response', response);  //timeout
   console.log('options', options);  //timeout rather than object
})

在其他代码中,我们没有使用 .fail 而是错误:我确实在第三个参数上得到了对象。

顺便说一句,这是一个 jsonp 魔术技巧,因为它会在出现错误时删除窗口对象中的值。另外,超时错误是故意执行的。

然后在错误回调中,我有这段代码来捕获它

if (options.jsonpCallback.indexOf('callback_') !== -1 ) {
  // jsonp magic code here
}

这不起作用 .fail 因为选项的值只是一个字符串,即 statusText。值为“超时”

【问题讨论】:

  • _.bind做什么?
  • Bergi,我今天早上修好了。我删除了 bind 并在顶部声明了 var self = this。

标签: jquery backbone.js promise jquery-deferred


【解决方案1】:

对于$.ajax 错误回调,您应该能够通过在回调中引用this 来获取选项,假设您不重新绑定this

.fail(function(xhr, status, error) {
   console.log('options', this);
})

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 2021-08-23
    • 2016-12-07
    • 2012-04-26
    • 2011-11-22
    • 2021-02-15
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多