首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有异步响应拦截器的ngResource

带有异步响应拦截器的ngResource
EN

Stack Overflow用户
提问于 2018-11-19 15:39:59
回答 2查看 75关注 0票数 0

我正在为使用ngResource的API调用编写响应拦截器,如下所示:

代码语言:javascript
复制
var Thing = $resource('/api/things/:id', {id: '@id'}, {
  queryAll: {
    method: 'GET',
    interceptor: {
      response: function(response) {
        var instance = response.resource;

        doAsyncStuffHere(instance.data);

        return instance;
      }
    }
  }
});

拦截器函数应该丰富响应中的数据,但在完成异步操作之前返回未修改的实例(正如预期的那样,因为它是异步的.)。

有什么好方法可以异步地丰富数据并使返回语句“等待”直到完成?回调?你保证?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-22 10:32:09

在寻找正确的问题之后,我找到了一篇解决了我的问题的文章:

有时,需要在拦截器内部进行一些异步操作。幸运的是,AngularJS允许我们返回稍后将解决的承诺。这将推迟在请求拦截器情况下发送请求,并在响应拦截器情况下推迟响应解析。

来自:http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/

下面是我的代码现在的样子和工作方式,就像一个魅力。

代码语言:javascript
复制
var Thing = $resource('/api/things/:id', {id: '@id'}, {
  queryAll: {
    method: 'GET',
    interceptor: {
      response: function(response) {
        var instance  = response.resource,
            _deferred = $q.defer();

        doAsyncStuffHere(instance.data).then(function() {
            _deferred.resolve(instance);
        });

        return deferred.promise;
      }
    }
  }
});
票数 0
EN

Stack Overflow用户

发布于 2018-11-19 16:21:48

使用o样例:https://docs.angularjs.org/api/ng/service/http#$http-参数;

自有的"transformRequest“éuma melhor op o;

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53378059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档