在数组上推送对象后,Array.length读取0

时间:2014-08-29 22:16:16

标签: javascript

我正在尝试将对象推送到数组并将数组作为队列处理。目前没有任何东西从数组中删除任何东西,并且每次调用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());
    }
}

1 个答案:

答案 0 :(得分:2)

每次拨打addToValidateQueue时,都会调用processValidateQueue,这会立即删除您刚刚添加的项目:

acme.validate_field(acme.validateQueue.shift());
//                            Right here ^

这意味着在下次通话时,您只能看到您在该通话中添加的项目。旧物品不见了。