2014-06-29 62 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) 

要么如果拒绝或解决的承诺成功或错误函数将在下一个语句中调用。