我一直在jQuery 1.5中測試新的延遲AJAX函數,並且對它們的簡單性和功能印象深刻。我有一個更大的問題與排隊這些請求的最佳方式有關。如何在jQuery 1.5中管理ajax請求的隊列?
我有兩種情況:串行和並行,如果你願意的話。我想避免同步/異步條款,因爲我確實希望所有這些都是異步請求,以便用戶可以在等待隊列進行處理時執行其他操作。然後我想在隊列完成處理時調用一個函數。
在具有兩個請求我希望如下它們處理過的 「串行模式」:
RequestA - > ResponseA - > RequestB - > ResponseB - > EndOfQueue
在 「並聯模式」有兩個請求我想這樣的結果:
RequestA - > RequestB(ResponseA,ResponseB處理每當準備好) - > EndOfQueue
在這兩種情況下,如果任何請求失敗,我想隊列停止並通過控制失效功能。
我有要求,指定一個動態的隊列長度,所以我不認爲我可以只將一堆.then()或.when()延遲在一起,因爲我不知道它是否是一個或一百個項目。我通過供應商的API在服務器上執行業務邏輯,因此服務器端批處理將很困難,因爲我無法控制該代碼。
我已經建立測試用例執行「平行」的情況下,並調用()函數時畢竟已經成功完成,但這些測試是不是在隊列長度動態的,是無法移植到串行模式。
我可以看到我怎麼能創建一個自定義隊列對象來處理這個問題,但似乎一切對我來說jQuery中已經寫的部分(?)。我看了,但還沒有找到一個以這種方式覆蓋順序請求的例子。
有關如何使用jQuery的隊列/延遲的功能處理這個有什麼想法?
謝謝!我會給這個鏡頭。在這個應用程序中,我們需要確保請求B在接收到響應A之前未啓動,因爲通常依賴於B的指令中A的結果。 – Graham 2011-03-15 21:08:40
@Graham:觀看Pedro Teixeira的[Asynchronous Iteration Patterns](http://nodetuts.com/tutorials/19-asynchronous-iteration-patterns.html)教程。他談論Node.js,但這些模式可以用於任何JavaScript代碼。我想你可能會發現一些有用的技巧,可以幫助你做你想做的事情。當我寫我的答案時,我完全忘了它。 – rsp 2011-03-15 21:20:48
非常有趣,再次感謝您的鏈接。我得到了一些關於如何構建自定義ajax隊列對象的好主意。 – Graham 2011-03-15 21:42:14