在我的AngularJS
應用程序中,我有一個參數數組(例如某些ID),它應該用作ajax調用隊列的參數。問題是數組可能包含600多個項目,如果我只是遞歸地使用forEach
循環進行ajax調用,瀏覽器頁面最終會在每個請求解析之前停止響應,因爲每個響應都會更新視圖。有沒有一種技術可以允許發送ajax請求,例如,一次5個請求,並且只有當這些請求完成後,繼續執行下一個5?JavaScript,AngularJS - 發送多個同步ajax調用
1
A
回答
1
我認爲最好的解決辦法是改變端點允許標識的數組,但我想這是不是一種選擇。您可以使用承諾來限制同時請求的數量:
function chunkedAjax(idArray, index, limit) {
if(index >= idArray.length) {
return;
}
var index = index || 0;
var limit = limit || 5;
var chunk = idArray.slice(index, limit);
var promises = [];
angular.forEach(chunk, function(id) {
var deferred = $q.defer();
promises.push(deferred.promise);
makeAjaxCall(id).then(function(response){
deferred.resolve();
});
});
$q.all(promises).then(function() {
chukedAjax(idArray, index + limit, limit);
});
}
這是一個遞歸函數,所以要警告。在投入生產之前,我會進行大量調試。
你也可能需要修改makeAjaxCall
函數返回一個承諾,如果它不已經,或者通過承諾對象,以便它可以當Ajax調用完成
+0
這沒有竅門! –
1
-1
是的!
相關問題
- 1. JavaScript,React - 發送多個併發的ajax調用
- 2. 同步AJAX調用
- 3. Angularjs調用同步
- 4. 發送多個ajax調用同一個文件
- 5. 多個Ajax異步調用
- 6. 同步Ajax調用
- 7. javascript同步ajax調用問題
- 8. Javascript/AJAX發送多個返回
- 9. 用AngularJS/AJAX/JavaScript調用PHP
- 10. 同時發送多個ajax電話
- 11. 同步等待$ .ajax調用
- 12. AngularJs:$ HTTP同步調用,
- 13. 同步多個API調用
- 14. Phonegap同步ajax調用
- 15. 如何使用AngularJS Ajax調用將多個變量發送到PHP?
- 16. 同步JavaScript調用
- 17. javascript同步調用
- 18. 發送單向ajax調用
- 19. 發送兩個同步ajax處理調用時無法設置$ _SESSION變量
- 20. 優化Ajax同步調用
- 21. AJAX同步調用問題
- 22. angularjs中的多個ajax調用
- 23. 如何同步調用多個功能angularjs
- 24. jQuery的多個Ajax調用,而不使用非同步虛假
- 25. 的Javascript:使用AJAX異步同步
- 26. 與Angularjs鏈接異步AJAX調用
- 27. 用ajax發送多個數據
- 28. 用jQuery發送另一個AJAX調用
- 29. 在爲新內容做Ajax調用後同步調用javascript
- 30. 在ajax發送多個值
你需要更新解決所有視圖完成後或每個視圖完成後? Promise.all ?? –
@IlyaNovojilov - 或第三個選項,在每個「批次」5完成後 –
等待,您計劃發送600個請求? – Bergi