好奇你的解决方案是什么,优雅地说,处理块js调用/ ajax调用需要花费太长时间才能与第三方网站联系以获取数据/信息。
最近,我一直在争论一些脚本/ ajax请求,其中服务器已关闭或没有响应,并且字面上阻止了我的页面。他们被认为是异步的。
所以,我想在x时间之后中止通话。
var request = $.ajax({
type: 'POST',
url: 'someurl',
success: function(result){}
});
然后使用:request.abort()如果花费太长时间。
但我想我可以在这里使用延迟/承诺,具有超时能力并且如果我的承诺在1000毫秒内没有回来,则会中止呼叫。
你的想法?
我没有提到ajax请求的超时attr。我不想在一个setTimeout中包装abort(),但是我需要jQuery ajax api w / timeout。我应该看到这个。谢谢大家。
答案 0 :(得分:2)
检查超时选项:http://api.jquery.com/jQuery.ajax/
var request = $.ajax({
type: 'POST',
url: 'someurl',
timeout: 2000,
success: function(result){},
error: function(xhr, status, message) {
if(status == "timeout") {
alert("Request time out");
}
}
});
答案 1 :(得分:1)
一种方法是使用setTimeout
var abort_req = setTimeout(function () {
request.abort();
}, 3000);
//^ time in ms
答案 2 :(得分:1)
jQuery $.ajax timeout setting可能重复。 JQuery AJAX有一个可选的超时选项,可以通过毫秒传递。通过将回调函数传递给错误选项,您可以在AJAX请求超时时处理逻辑,如下所示:
error: function(x, t, m){
//process error here
}