簡體   English   中英

序列化POST請求jQuery / Javascript

[英]Serialising POST requests jQuery/Javascript

我正在研究一個每1500ms發送一個AJAX POST請求(我現在使用的是jQuery)的應用程序。 我注意到,大多數情況下,這些請求在350-450ms內成功,並以與生成它們相同的順序很好地發送到服務器。

但有時,一兩個請求需要將近3-4秒,並且稍后會交付。 在我的應用程序中,我需要確保服務器以與從客戶端發送的順序相同的順序接收這些請求。 我怎么做? 我使用當前setInterval為1500ms來調用一個函數(生成要發布的數據),並使用$ .ajax()對其進行POST。 但是,如何序列化請求?

不知道這在javascript中究竟是如何工作的,但你可以創建一個列表或數組的請求,先進先出類型的列表,所以在准備就緒時你將你的請求或創建請求所需的任何值推送到數組,在設置間隔后從數組中獲取並發送請求。 基本上你會以這種方式排隊你的請求。

一種方法是包含與js一起發送的時間戳 ,並且在接收端,您可以將每個調用添加到隊列 ,然后在按timestamp DESC對其進行排序后執行該隊列

如果您提供有關實際發生情況的更多信息,您可以根據請求的類型調整間隔(例如,預期響應時間有多長?

以下將在啟動1500ms計時器之前等待服務器響應以啟動下一個請求...

$(function() {
  var recursive = arguments.callee;
  $.post("http://url", { /* data */ }, function() {
    setTimeout(recursive, 1500);
  });
});

您無法保證異步設置中的響應順序。 但是,你可以做的是

  1. 在請求和響應上添加序列號(或時間戳)。
  2. 收到每個響應后,將結果存儲在以序列號為鍵的全局存儲中
  3. 運行單獨的setInterval進程,以正確的順序檢查全局存儲,處理結果並將其關閉。

這將保證結果的序列化執行。 但是需要注意超時或錯誤輸出的請求,以免停止后續處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM