2014-04-10 59 views
0

我正在做一些ajax調用,我期望他們中的一些或全部到404。問題是,當我得到預期的404時,.done()不執行!我究竟做錯了什麼?jQuery何時()。完成()不開火

下面是代碼:

$.each(data, function (index, item) { 
    promises.push(GetReservation(item.UniqueId, 
     apiRoot, 
     function (data2) { 
      //DO stuff 
     }, 
     function (x, y, z) { 
      if (x.status == 404) { 
       //OK!!! i expected that! 
      } 
     })); 
}) 
$.when.apply($, promises).done(function() { 
    setButtons(box, c) 
}); 
+1

我向你保證,當你有多個承諾時,你有承諾。 – naomik

+0

好的,謝謝......我會在我的代碼中更正 – Leonardo

回答

1

因爲$。當回報的承諾,你可以調用的總是,而不是做。無論響應是否成功,它都會調用回調。

$.when.apply($, promises).always(function() { 
    setButtons(box, c) 
}); 
+0

我認爲完成意味着「當我完成時,無論成功還是失敗」 – Leonardo

+0

@Leonardo:不,完成只附加一個成功處理程序。 – Bergi