2016-02-04 154 views
0

在角JS,與$http()的服務,我們可以趕上誤差

return $http(defaultConfig).then(sendResponseData)**.catch(errorCallBack)**; 

然而,在jQuery的,如果我做

return $.ajax(ajaxConfig).then(sendResponseData)**.catch(errorCallBack)**; 

那麼Chrome瀏覽器開發工具拋出異常。

+0

'.then(sendResponseData,errorCallBack)'??? –

回答

1
jqXHR.then(function(data, textStatus, jqXHR) {}, function(jqXHR, textStatus, errorThrown) {}); 

集成了)中,.done的功能(和.fail()方法,允許(如jQuery的1.8的)

deferred.then(doneFilter [, failFilter ] [, progressFilter ]) 

由於jQuery.Ajax方法返回一個jqXHR對象,它是從Deferred對象派生而來的,我們可以使用.then方法按照belo代碼附加處理程序。

$.ajax(config).then(
    function() { 
    alert("$.get succeeded"); 
    }, function() { 
    alert("$.get failed!"); 
    } 
); 

之前的jQuery 1.8,參數可能是一個功能或功能的陣列。

對於所有簽名,如果不需要該類型的回調,則參數可以爲null。或者,使用.done(),.fail()或.progress()僅設置一種類型的回調,而不過濾狀態或值。

從jQuery 1.8開始,deferred.then()方法返回一個新的承諾,它可以通過函數過濾延遲的狀態和值,取代現在不推薦使用的deferred.pipe()方法。 doneFilter和failFilter函數過濾原始延遲的已解決/拒絕狀態和值。 progressFilter函數過濾對原始延遲的notify或notifyWith方法的調用。這些過濾函數可以返回一個新的值,傳遞給承諾的.done() or .fail() callbacks,或者返回另一個可觀察對象(Deferred,Promise等),它將解析/拒絕的狀態和值傳遞給promise的回調函數。如果使用的過濾器函數爲null或未指定,則承諾將被解析或拒絕,其值與原始值相同。

回調按照它們添加的順序執行。由於deferred.then返回一個Promise,所以Promise對象的其他方法可以鏈接到這個方法,包括其他方法.then()

1

的jQuery deffered對象provied什麼其他很多圖書館呼籲catch一個fail方法。您也可以簡單地將第二個函數傳遞給then - 第二個參數是失敗處理程序。