2014-06-29 92 views

回答

0

使用defer.reject方法:

 var defer = $q.defer(); 

     /* .. */ 
     response.data.name = response.data.name + " error(2)"; 

     if(<drop me>){ 
      defer.reject(response); 
      return defer.promise; 
     } 

     return response; 
     /* .. */ 

通過這種方式,你會去錯誤回調

PLUNKER

請記住,您只能解決/拒絕一次承諾!

+0

嘗試按「獲取數據」按鈕一次或幾次。它工作不正確。 –

+0

只需將'var defer = $ q.defer();'移動到放置部分。改變了Plunker –

0

一般而言,您不會返回結果(在您的案例中),您應該返回承諾。然後你解決的承諾與你的結果:

var deferred = q.defer(); 
deferred.resolve(response); 
return deferred.promise; 

或拒絕承諾

deferred.reject(response); 

或歸還已經拒絕承諾

return $q.reject(response) 

要麼如果拒絕或解決的承諾成功或錯誤函數將在下一個語句中調用。