想象一下
var resource = resourceClass.get(function(data){
console.log("red");
console.log(data);
});
resource.$promise.then(function(data){
console.log("green");
console.log(data);
});
以下哪个成功回调将首先执行,红色还是绿色?它会一直都一样吗?
好吧。ngResource .get
调用在内部执行:
Resource[name] = function (a1, a2, a3, a4) {
var params = {}, data, success, error;
...
var promise = $http(httpConfig).then(function (response) {
...
promise = promise.then(function (response) {
var value = responseInterceptor(response);
(success || noop)(value, response.headers);
return value;
},responseErrorInterceptor)
value.$promise = promise;
return value;
这意味着,基本上,成功回调将始终在$promise .then
之前运行。然而,这是实现的细节,如果我是你,我不会依赖它。
承诺本身是连锁的,所以你可以做:
resource.$promise.then(function(data){
console.log("green");
console.log(data);
return data;
}).then(function(data){
console.log("foo",data);
});