加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在angularjs中设置条件$资源超时?

发布时间:2020-12-17 18:03:29 所属栏目:安全 来源:网络整理
导读:似乎很清楚如何设置一个全局方法来中止http请求.有点像 $scope.canceller = $q.defer();var API = $resource('http:/foo.com',{},{get: { method:'GET',timeout:$scope.canceller.promise}});$scope.abortRequests = function() { $scope.canceller.resolve(
似乎很清楚如何设置一个全局方法来中止http请求.有点像

$scope.canceller = $q.defer();
var API = $resource('http:/foo.com',{},{get: { 
    method:'GET',timeout:$scope.canceller.promise
}});

$scope.abortRequests = function() {
    $scope.canceller.resolve();
}

但是,我希望能够仅中止特定请求.我可以为我需要能够中止的请求定义单独的资源,但这非常难看.当我调用可以允许超时有条件的$resource时,有什么方法可以传入参数或其他东西吗?也许是这样的:

var API = $resource('http:/foo.com',timeout:function() { if (FOO) { return $scope.canceller.promise; }}
}});

但是如何访问FOO?

感谢您的任何见解!

解决方法

也许您可以尝试将$资源包装为模型并通过此类服务调用访问数据.该示例显示,只有$routeChangeStart可以解析超时承诺.正如你所提到的那样,它在某种程度上是有条件的.

app.factory('fooModel',function ($resource) {
    return function (canceler) {
        return $resource('http:/foo.com',{
                query:  {method:'GET',timeout: canceler.promise },}
        );
    };
});

app.service('fooService',function (fooModel,$q,$rootScope) {
    this.getBar = function(whatEver) {
        var deferred = $q.defer();
        var params = {};
        var canceler = $q.defer();

        $rootScope.$on('$routeChangeStart',function () {
            canceler.resolve();
        });

        fooModel(canceler).query(
            params,function(response) {
                deferred.reject(response);
            },function(error) {
                deferred.reject(error);
            });
        return deferred.promise;
    };
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读