【问题标题】:angularjs:timeout not working in $http POST requestangularjs:timeout 在 $http POST 请求中不起作用
【发布时间】:2015-07-07 03:39:33
【问题描述】:

我的代码中有以下 sn-p,它为请求设置了以毫秒为单位的超时。但即使满足超时,它也不会取消。

var httpURL = {
            method : URLobj.method,
            url : urlString,
            data : data,
            withCredentials : true,
            headers : URLobj.headers,
            timeout:200
    };

    this.$http(httpURL).success(successFunc).error(errorFunc);

有人可以说明如何使用这个超时参数。我使用的是 v1.2.26。

【问题讨论】:

  • 你的“successFunc”处理程序被执行了吗?
  • 是 SuccessFunc 在超时时间之后执行
  • 如果您查看 Web 浏览器开发人员工具的网络部分,您会发现 http 调用耗时超过 200 毫秒吗?
  • 请在 httpURL 配置 json 中删除 successHandle : successFunc 和 errorHandle : errorFunc。 $http 中没有这样的配置
  • 它们正在工作,因为您已分别将它们添加到 .success 和 .error 回调中

标签: angularjs


【解决方案1】:

这就是你如何创建一个带有超时的 $http 调用

$http({
        method: URLobj.method,
        url: urlstring,
        withCredentials : true,
        headers: URLobj.headers,
        timeout: 200
     }).success(function(data){
        // With the data succesfully returned, call our callback
        successFunc(data);
    }).error(function(){
        errorFunc("error");
    });
 }
});

【讨论】:

  • 我的一个拦截器中有config.timeout = deferred.promise;,它覆盖了我设置的值。
  • 为什么这被标记为正确答案?我发现原始代码没有变化,但格式没有变化。
【解决方案2】:

我有 config.timeout = deferred.promise;在我的一个拦截器中,它覆盖了我设置的值。评论它对我有用。

config.timeout = deferred.promise; 

【讨论】:

  • 嗨@Divya MV,你能发布完整的代码吗?我们如何在这里获取配置和延迟对象?
【解决方案3】:

以下语法可以使用

$http.post(url, parms, {timeout: 60000}).then(function(success){}, function(error){})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2020-07-23
    相关资源
    最近更新 更多