Я думаю, что проблема заключается в следующем, давайте предположим, что этот код:
array1 = [1000, 2000, 1000, 4000, 10000];
array1.forEach(function(item) { //all actions start at 0
setTimeout(function() {
console.log("some action of item "+item);
}, item);
}
);
Все setTimeout
функция рассчитывается от 0 + элемент время, поэтому времена 1000 и 1000собираются быть выполнены в то же время.Может быть, вы хотите учесть время как item [i1] + item [i2] , тогда вы должны суммировать все время, проведенное в каждой итерации.Код таким образом будет выглядеть примерно так:
array1 = [1000, 2000, 1000, 4000, 10000];
var abs = 0;//beginning
array1.forEach(function(item) {
if(!abs){
abs = item;
}else{
abs += item;//sum time spent
}
console.log("set "+abs+" to setTimeout");
setTimeout(function() {
console.log("some action of item "+item);
}, +abs);
}
);
В этом примере 2-е число 1000 будет вычислено после 1000 и 2000, то есть через 4000 мс после запуска цикла.