Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当x时间之后没有响应时,如何取消ajax请求或第三方js请求w/abort()_Javascript_Jquery_Ajax_Jquery Deferred - Fatal编程技术网

Javascript 当x时间之后没有响应时,如何取消ajax请求或第三方js请求w/abort()

Javascript 当x时间之后没有响应时,如何取消ajax请求或第三方js请求w/abort(),javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,好奇您的一些解决方案是什么,优雅地处理block js调用/ajax调用,这些调用需要花费很长时间才能到达第三方站点获取数据/信息 最近,我遇到了一些脚本/ajax请求,在这些请求中,服务器要么关闭,要么没有响应,实际上会阻塞我的页面。它们应该是异步的 所以,我想在x时间后中止通话 var request = $.ajax({ type: 'POST', url: 'someurl', success: function(result){} }); 如果需要的时间太长,

好奇您的一些解决方案是什么,优雅地处理block js调用/ajax调用,这些调用需要花费很长时间才能到达第三方站点获取数据/信息

最近,我遇到了一些脚本/ajax请求,在这些请求中,服务器要么关闭,要么没有响应,实际上会阻塞我的页面。它们应该是异步的

所以,我想在x时间后中止通话

var request = $.ajax({
    type: 'POST',
    url: 'someurl',
    success: function(result){}
});
如果需要的时间太长,则使用:request.abort()

但我想我可以在这里使用延迟/承诺,如果我的承诺在1000毫秒内没有回来,我可以使用超时功能和调用中止

你的想法

我的错误在于没有引用ajax请求的超时属性。我不想将abort()封装在setTimeout中,但我需要的是jQuery ajax api w/timeout。我应该看看这个。谢谢大家。

一种方法可以使用

一种方法是使用

可能的副本。jqueryajax有一个可选的超时选项,可以以毫秒为单位传递。通过向错误选项传递回调函数,可以在AJAX请求超时时处理逻辑,如下所示:

error: function(x, t, m){
    //process error here
}
可能的副本。jqueryajax有一个可选的超时选项,可以以毫秒为单位传递。通过向错误选项传递回调函数,可以在AJAX请求超时时处理逻辑,如下所示:

error: function(x, t, m){
    //process error here
}

选中超时选项:


选中超时选项:


如何将
$.ajax()
上的
timeout
属性设置为1000并让jQuery处理它?然后检查timeout如何将
$.ajax()
上的
timeout
属性设置为1000,并让jQuery处理它?然后检查超时
var request = $.ajax({
    type: 'POST',
    url: 'someurl',
    timeout: 2000,
    success: function(result){},
    error: function(xhr, status, message) {
        if(status == "timeout") {
            alert("Request time out");
       }
   }
});