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

success callback on resource class action, or on resources promise, which is first?

本文关键字:资源 承诺 哪一个 第一个 回调 操作 成功      更新时间:2023-09-26

想象一下

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