4

我有一个服务来保存我所有的 API 端点连接器。这些端点连接器是 ngResource 对象。

在其中一些中,我覆盖了默认方法,get例如query添加responseTransformers. 我希望能够设置方法的timeout属性get以在发送另一个请求之前停止一个请求,但我不想在我的服务中执行此操作,我在其中定义了所有$resources:

this.collections = $resource(BackendConfig.apiUrl + 'collections/:uid/', {}, {
    query: {
        isArray: false,
        method: 'GET',
        timeout: myTimeoutPromise
    },
});

但在运行时,就在我这样做之前

Resource.collections.query().then(function () {});

分析代码我得出结论,可以覆盖参数(第二个参数),但不能覆盖操作(第三个)。

我找到了可能(尚未实现)的解决方案:创建新的服务来保存所有超时(比如说中断器),在我需要的地方注入我的资源服务并在那里定义超时承诺。有更方便的解决方案吗?

4

1 回答 1

0

我不知道您的 $resources 做什么,但也许您可以将您的承诺链接到提供者中。

$http.get( SOME_URL_HERE ).
  then( function(response){
    /*Resolve the first promise then chain your other requests*/
    var promises = [ ];

    promises.push ( $http.get( OTHER_URL ) );
    promises.push ( $http.get( AGAIN_OTHER_URL ) );

    return $q.all( promises );
  })
  .then ( function( responses){
    /*This 'then' is of the chaining*/
    reponses[0].something /*response of the first promise*/
    reponses[1].something /*response of the second promise*/

  })
  .catch( function(error){
    console.log( error );
  });
于 2015-02-16T06:58:07.333 回答