我正在尝试将对象推送到数组并将数组作为队列处理。目前没有任何东西从数组中删除任何东西,并且每次调用acme.addToValidateQueue函数时(连续几次)它总是显示1作为数组长度。我做错了什么?
var acme = {};
acme.validateQueue = [];
acme.validateQueueLastIndex = 0;
acme.addToValidateQueue = function(fieldData,fieldName){
var queueItem = {
index : acme.validateQueueLastIndex,
fieldData : fieldData,
fieldName : fieldName
};
acme.validateQueue.push(queueItem);
acme.validateQueueLastIndex++;
console.log(acme.validateQueue.length); // shows 1 everytime the queue is called.
if(acme.validateQueue.length === 1){
acme.processValidateQueue();
};
}
acme.processValidateQueue = function(){
if(acme.validateQueue.length){
acme.validate_field(acme.validateQueue.shift());
}
}
答案 0 :(得分:2)
每次拨打addToValidateQueue
时,都会调用processValidateQueue
,这会立即删除您刚刚添加的项目:
acme.validate_field(acme.validateQueue.shift());
// Right here ^
这意味着在下次通话时,您只能看到您在该通话中添加的项目。旧物品不见了。