资源类操作成功回调,还是资源承诺,这是第一个?

时间:2014-04-29 14:05:37

标签: javascript angularjs callback promise angular-resource

想象一下

var resource = resourceClass.get(function(data){ console.log("red"); console.log(data); });

resource.$promise.then(function(data){ console.log("green"); console.log(data); });

首先会执行哪些成功回调,红色还是绿色?会不会一样?

1 个答案:

答案 0 :(得分:1)

好。内部有ngResource .get call

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);
});