0
我目前有一個應用程序依賴於所有正在檢索的數據,然後繼續進一步的代碼。jQuery推遲ajax調用的循環
有一個包含循環的主函數「_update()」,該循環調用_getData()。我需要「_update()」在接收到所有數據時將變量設置爲true。
以下是我有:
DataCollection.prototype._update = function() {
var _self = this;
var _itemsResponded = 0;
var itemData = [];
if (_self._ready) {
_self._ready = false;
this.collection.forEach(function (item, index) {
_self.apiData.id = item.id;
var ajaxPromise = _self._getData();
ajaxPromise.done(function(data){
itemData[index] = data;
_self._itemsResponded++;
});
})
if (_self._itemsResponded === _self.collection.length) {
_self._ready = true;
console.log(itemData);
console.log('done');
}
}
}
DataCollection.prototype._getData = function() {
var _self = this;
var ajaxPromise = $.ajax({
url: 'ajax.php',
data : _self.apiData,
dataType: 'json'
});
var dff = $.Deferred();
ajaxPromise.then(function(data) {
dff.resolve(data);
}, function(){
dff.reject();
});
return dff.promise();
}
從我的理解中,_getData功能是否正常工作。這是在更新中的.forEach,不能按預期工作。我認爲.forEach是同步的?
感謝您的快速回答。 – Stoyvo
在$ .when()中,您將「參數」傳遞給地圖。這個變量是什麼? – Stoyvo
@Stoyvo https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments –