繁体   English   中英

发出Ajax请求时,如何仅等待1秒,但在等待时间后不取消请求?

[英]How to wait only for 1 second when Ajax Request is made, but don't cancel the request after wait time?

我有一种情况,如果ajax请求未在1秒钟内返回,则必须返回false。 但是在请求完成后处理响应。 使用Ajax超时对我不起作用,因为它会在该时间之后取消请求。 但是,即使需要很长时间,我也希望得到响应。

例:

function call(){
  ajax.request(...)
     if(does not respond in 1 second)
        immediately return false and wait for response
     else
        return response
}

您需要在请求完成和处理程序之间建立一个针对错误的竞赛。 如果请求首先完成,请设置一个在处理错误之前检查的标志:

function call(){
  let finished = false;
  function callback(){ 
    finished = true 
    // your callback code goes here
  };
  ajax.request(..., callback) // make sure this is an async request
  function handleTimeout() {
    if (finished) return;
    // your timeout code goes here
  }
  setTimeout(handleTimeout, TIMEOUT_IN_MILLISECONDS);
}

除了设置标志之外,您还可以取消超时

请注意,您的call函数不会返回任何内容。 相反,您实际上是处理事件(请求完成或超时到期或两者都发生)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM