这是一个实用工具库角的一部分,但我会在这里只复制功能是独自可以很容易地重现该问题。问题是,由于某种原因,存在输出1以下项比有在数组中。例如,数组长度为1000时,只会在结果数组中输出999个元素。为什么?同步迭代器跳过第一个项目阵列
功能:
var sync = function(items, eachFn, callbackFn){
var results = [],
errors = [];
function next(error,result){
if(error) {
errors.push(error);
}
if(result) {
results.push(result);
}
if(items.length == 0){
return callbackFn(errors,results);
}else{
eachFn(items.shift(),next);
}
};
next();
};
的摄制:
var array = new Array(1000).fill(0);// 1000 item array
var i = -1;
sync(array,function(item,next){
i++;
next(null,i);
},function(errors,results){
console.log(results.length === 1000);// but its 999, why?
});
初始化为0阵列带来的1000个项目,而不是-1 – andrepaulo