在角JS,與$http()
的服務,我們可以趕上誤差
return $http(defaultConfig).then(sendResponseData)**.catch(errorCallBack)**;
然而,在jQuery的,如果我做
return $.ajax(ajaxConfig).then(sendResponseData)**.catch(errorCallBack)**;
那麼Chrome瀏覽器開發工具拋出異常。
在角JS,與$http()
的服務,我們可以趕上誤差
return $http(defaultConfig).then(sendResponseData)**.catch(errorCallBack)**;
然而,在jQuery的,如果我做
return $.ajax(ajaxConfig).then(sendResponseData)**.catch(errorCallBack)**;
那麼Chrome瀏覽器開發工具拋出異常。
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()
。
'.then(sendResponseData,errorCallBack)'??? –