我只是一個有關於這段代碼的簡單查詢:
服務代碼:
function getUser($q, $http) {
return $http.get('...').then(function(response) {
return response.data;
});
}
控制器代碼:
// getUser's consuming code
getUser().then(
function(data) { // Success callback
// Do something about data
},
function(response) { // Error callback
// How does this error callback gets called ??
}
);
如果get用戶http調用發生一些錯誤。我無法理解錯誤回調在控制器中的調用方式(內部工作)。
我問這個的原因是因爲我認爲我們要調用的拒絕方法(遞延對象)在服務的話,錯誤回調使得則後續的錯誤回調(一種在控制器)被稱爲。
即
function getUser($q, $http) {
return $http.get('...').then(function(response) {
return response.data;
},function(response){
return $q.reject(response)
});
}
但如何當我們不從第一則錯誤回調(服務裏面的一個),這相當於一個錯誤返回任何的控制器則錯誤回調被調用。
這就是promises的工作原理。如果你的代碼像'promiseA.then(promiseB).then(promiseC).then(promiseD).then(success,failure)'和'promiseB'拒絕,那麼'promiseC'和'promiseD'將被跳過,並且'failure'方法將被執行 –
@KirillSlatin因此,本質上如果發生了一些錯誤,那麼不管下一個方法是否擁有它或其他任何鏈接?都會調用下一個可用的失敗方法? –
是的,@ bhavya_w,這是正確的 –