我有一個頁面上有許多動作,它觸發$ .get,但我想一次運行一個,而不是一次觸發,這是很多加載時間..所以這對我來說有什麼解決方案?
好在你給出答案之前..我不想基於時間觸發,我想在每個請求完成後從ajax完成後觸發,然後繼續循環,以便在完成第一個操作後返回ajax。
我有一個頁面上有許多動作,它觸發$ .get,但我想一次運行一個,而不是一次觸發,這是很多加載時間..所以這對我來說有什麼解決方案?
好在你給出答案之前..我不想基於時間觸發,我想在每個請求完成後從ajax完成後觸發,然後繼續循環,以便在完成第一個操作後返回ajax。
是否要執行同步請求?如果是這樣,你需要使用jQuery的ajax
方法而不是get
,設置async:false
。
檢查http://api.jquery.com/jQuery.ajax/
編輯
正如一位評論者指出的正確,使同步請求掛起javascript代碼具有唯一的線索。這意味着在等待請求完成時,沒有動畫或其他代碼正在運行。
一個有趣的選擇將是「鏈」您的要求,執行下一個請求前一個回調是這樣的:
$.get('ajax/first-call.html', function(data) {
$.get('ajax/second-call.html', function(data){
//etc
}
});
聽起來你想要一個ajax隊列。我之前使用過this plugin,這很簡單。
您可以設置在jQuery的自定義的隊列。
很好的答案,但應該提到的是,需要在設置隊列之後調用'dequeue',而不是在$ .get回調函數之外發起第一個請求。此外,'queue'和'dequeue'函數需要應用於jQuery選擇器。我使用'$('body')。queue()' – Andy 2014-12-03 16:09:03
大多數瀏覽器只會一次請求同一個域的四個HTTP調用。其他人將排隊並連續執行。所以瀏覽器已經對這些請求實施了一些排隊。
請注意同步請求,因爲瀏覽器可能在請求正在進行時掛起。 – 2010-07-09 23:24:56
你認爲隊列爲首選的隊列 – Basit 2010-07-10 15:59:13