簡體   English   中英

拒絕角度$ resource的$ update函數中的延遲

[英]Reject deferred in $update function of an angular $resource

在我的角度應用程序中,我更新了以下任務

task.$update().then(function (task) {
   // success
}, function (response) {
   // failure
});

從后端我得到422 ,但是調用了第一個回調。

我的資源看起來像這樣

angular.module('App')
    .factory('Task', function ($resource) {
        var resource = $resource('/admin/tasks/:id', { id: '@id' }, {
            new: {
                 method: 'GET',
                 url: '/admin/tasks/new'
            },
            update: {
                 method: 'PUT'
            },
            ...
        });

    return resource;
});

問題是,在哪種情況下第二個回調稱為? 如果需要,我可以在update方法中做什么,以便調用第二個回調?

更新:一直調用成功回調的原因是因為我有一個錯誤攔截器

angular
.module('App')
    .factory('errorInterceptor', function ($location, $q, $rootScope) {
        return { 
            responseError: function (response) {
                if (response.config.url.match($location.$$host)) {
                    $rootScope.error = response;

                    return $q.reject(response);
                }

                return $q.when(response);
            } 
        };
    });

顯然,如果您確實return $q.when(response); 你告訴安格爾一切都很好,對吧?

回調被指定為$ update()函數的參數,如下所示:

$task.$update(function(task) {}, function(response) {})

請參閱$ resource的官方文檔:

可以使用以下參數調用類對象或實例對象上的操作方法:

  • HTTP GET“類”操作:Resource.action([參數],[成功],[錯誤])
  • 非GET“類”操作:Resource.action([參數],postData,[成功],[錯誤])
  • 非GET實例操作:instance。$ action([參數],[成功],[錯誤])

事實是,與$ http不同,$ update或任何資源方法都不直接返回promise。 他們返回一個空引用。

請注意,$ resource內部使用$ http ,因此$ http docs適用(關於回調):

在200到299之間的響應狀態代碼被視為成功狀態,並將導致調用成功回調。 請注意,如果響應是重定向,則XMLHttpRequest將透明地跟隨它,這意味着不會為此類響應調用錯誤回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM