【问题标题】:on JQuery Deffered object (with backboneJS) how do i know which request failed?在 JQuery Deferred 对象(带有骨干 JS)上,我怎么知道哪个请求失败了?
【发布时间】:2012-06-05 17:58:43
【问题描述】:

我试过用backboneJS来做这个:

$.when(cardsCollection.fetch(),series.fetch())
              .done(function(){
                cardsListView.series = series;
                cardsListView.template = _.template(CardsListTemplate);
                cardsListView.render();
            }).fail(function(){
                cardsListView.series = new Series({seriesID:0,seriesName:""});
                cardsListView.template = _.template(CardsListTemplate);
                cardsListView.render();
                });

我错过了示例中的失败回调参数。 但是,我的目的是检查哪个获取失败,以及是否是该系列继续使用假数据。

JQuery 可以延迟吗?

【问题讨论】:

  • 尝试 console.logging 传递给 .fail() 的参数,看看其中是否有任何有用的信息。 console.log(arguments)
  • 这很奇怪。我尝试记录 done 和 fail 参数。它只会失败并且只有失败的论点......
  • 也可以试试.always,只是为了彻底。它的工作方式与.done.fail 相同,console.log 参数。

标签: jquery backbone.js jquery-deferred


【解决方案1】:

你可以使用deferred.state()

 cardsCollectionPromise = cardsCollection.fetch();
 seriesPromise = series.fetch();
 $.when(cardsCollectionPromise, seriesPromise)
          .done(function(){
        // ...
        }).fail(function(){
            if (cardsCollectionPromise.state() === 'rejected') {
               // ...
            },
            else (seriesPromise.state() === 'rejected') {
              // ...
            }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多