我可以在放弃之前的ajax请求后立即开始一个新的请求吗?

6
我有一个Web应用程序,每次连接都会进行HTTPs握手,我决心找出原因。HTTP keep-alive正在工作,因此强制请求启动新的HTTPs握手的是其他原因。
我有类似以下的伪代码:
   startNewRequest() {
     if (oldRequest)
        oldRequest.abort(); // abort old request
     oldRequest = $.ajax(); // start new request
   }

请求对象是由jQuery的ajax方法返回的XMLHttpRequest。每次开始请求时,我都会中止上一次请求。

我的问题是,这样做是否会强制启动一个新的请求来进行HTTP握手,因为旧的请求尚未完成。这些请求是常规的POST请求。我需要在启动新请求之前显式等待about()完成,以利用HTTP keep alive吗?

每次我中止请求时,我都会在$.ajax()的错误回调中得到一个调用。我需要在错误处理程序中获得回调后才开始新的请求吗?


1
可能需要使用 $ .when() 函数。http://api.jquery.com/jquery.when/ - codebased
jQuery .always() "添加处理程序,当延迟对象被解决或拒绝时调用"。有关更多信息,请参见http://api.jquery.com/deferred.always/。 - jave.web
2个回答

1

使用$.ajax中的complete或error

Complete:

$.ajax({
   url : RequestUrl,
   complete : function(){
       // Do something when request complete
   }
});

错误:


$.ajax({
   url : RequestUrl,
   error: function(){
       // Do something when an error occurred when the request is done
   }
});

0
$.ajax({
   url : yoururl,
   success : function(){
       // Do whatever
       // oldRequest = $.ajax();
   }
});

2
你能解释一下这段代码是如何解决OP遇到的问题的吗?看起来你只处理了请求成功的情况,而这显然不是这个问题所在。 - Spooky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接