angularjs:timeout 在 POST 请求中不起作用$http

angularjs:timeout not working in $http POST request

提问人:Divya MV 提问时间:4/28/2015 最后编辑:Divya MV 更新时间:3/13/2018 访问量:9705

问:

我的代码中有以下代码片段,它为请求设置了以毫秒为单位的超时。但即使达到超时,它也不会取消。

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。

service invocation

angularjs 的

评论

0赞 Jonathan Smith 4/28/2015
您的“successFunc”处理程序会被执行吗?
0赞 Divya MV 4/28/2015
是的,SuccessFunc 的执行时间晚于超时时间
0赞 Jonathan Smith 4/28/2015
如果您查看 Web 浏览器开发人员工具的网络部分,您能看到 http 调用花费超过 200 毫秒的时间吗?
2赞 manasi sakhare 4/28/2015
在 httpURL 配置 json 中,请删除 successHandle : successFunc 和 errorHandle : errorFunc。$http中没有这样的配置
2赞 manasi sakhare 4/28/2015
它们正在工作,因为您已分别将它们添加到 .success 和 .error 回调中

答:

3赞 Jonathan Smith 4/28/2015 #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");
    });
 }
});

评论

1赞 Divya MV 4/29/2015
我的一个拦截器覆盖了我设置的值。config.timeout = deferred.promise;
3赞 Joel Hernandez 8/4/2015
为什么这被标记为正确答案?我看到原始代码没有变化,但格式化。
1赞 Divya MV 1/2/2017 #2

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

config.timeout = deferred.promise; 

评论

0赞 Pandiarajan 2/10/2020
嗨,@Divya MV,你能发布完整的代码吗?我们如何在这里获得配置和延迟对象?
-1赞 Om Shankar 3/13/2018 #3

以下语法将起作用

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