2014-02-07 33 views
11

我试图用我的资源处理错误,然后处理拒绝我的$q.all()中的资源。

这是我的代码:

var user = User.get({id: 1}, function() { 
    // Success 
}, function(response) { 
    // Error 
    return $q.reject(response); 
}); 

var promiseList = [user]; 
$q.all(promiseList).then(function(){ 
    // Success <-- this seems to run all the time 
    }, function(response) { 
    // Error <-- this never seems to run but I want it to 
}); 

当我的用户资源接收404,错误回调处理它,并返回一个$q.reject

然而成功回调在我$q.all被调用,而不是我的错误回调。我会想,因为我拒绝我的承诺,$q.all错误回调将被解雇?

我很感激我在我的promiseList只有1项,但这应该没有区别吗?

+4

我想你会需要[user。$ promise]来获得预期的结果。 – michael

+0

成功回调接收哪些参数? – Bergi

+0

谢谢迈克尔,让我的一天!!!!! – ppollono

回答

12

据迈克尔在评论

我改变

var promiseList = [user]; 

要这样:

var promiseList = [user.$promise]; 

而且现在$q.reject()正在由$q.all()回升。

太棒了,谢谢你的建议。

+0

我无法找出为什么我的$ q.all()不能正常工作。经过几个小时的搜索,我终于找到了promise.promise属性的问题! –

相关问题