gpt4 book ai didi

javascript - 拒绝 Angular $resource 的 $update 函数中的延迟

转载 作者:行者123 更新时间:2023-12-03 09:34:18 25 4
gpt4 key购买 nike

在我的 Angular 应用程序中,我按如下方式更新任务

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);,你就告诉 Angular 一切都很好,对吧?

最佳答案

回调被指定为 $update() 函数的参数,如下所示:

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

参见 $resource 的官方文档:

The action methods on the class object or instance object can be invoked with the following parameters:

  • HTTP GET "class" actions: Resource.action([parameters], [success], [error])
  • non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
  • non-GET instance actions: instance.$action([parameters], [success], [error])

问题是,与 $http 不同,$update 或任何资源方法不会直接返回 promise 。他们返回一个空引用。

请注意,$resource 使用 $http在内部,因此 $http 文档适用(关于回调):

A response status code between 200 and 299 is considered a success status and will result in the success callback being called. Note that if the response is a redirect, XMLHttpRequest will transparently follow it, meaning that the error callback will not be called for such responses.

关于javascript - 拒绝 Angular $resource 的 $update 函数中的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31384967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com