Код ниже позволяет мне иметь массив с набором чисел, таких как «thearray = [2,8,9]» и пропустить этот массив, а для каждого элемента номера в массиве, например «2,8», 9 ", код вызывает функцию количество раз, равное текущему номеру элемента в массиве. Поэтому, если текущий номер позиции равен 2, функция вызывается дважды.Как я могу получить этот код, чтобы сделать последовательность очевидной?
После набора вызовов происходит пауза, а затем функция снова вызывается количеством раз, равным текущему числу в массиве и т. Д. Другими словами, по мере того, как массив проходит цикл, текущий номер элемента равен 2, функция с именем «функция» будет вызываться дважды, тогда есть пауза, а функция «функция» снова называется количеством раз, равным следующему числу в массиве.
В моем случае «функция» просто отображает сообщение в поле предупреждения дважды, за которым следует пауза, затем 8 раз, за которым следует пауза, затем 9 раз, за которой следует пауза и т. Д. Конечно, Я получаю сообщения в последовательности, потому что я должен выбрать ok, прежде чем я увижу следующее предупреждающее сообщение. Проблема в том, что я не могу заставить вызовы «функции» появляться последовательно, например, когда код, который должен быть выполнен в «функции», отображает окно предупреждения, когда другой код, такой как добавление элемента li с данными в ul, находится внутри эта функция.
Это как если бы два вызова выполнялись сразу, тогда 8 вызовов выполняются сразу и т. Д. Даже если это может быть не так, это происходит так быстро, похоже, что это так. Я хотел бы замедлить его. Таким образом, если код внутри «функции» был кодом, который будет добавлять информацию к элементу li, вместо того, чтобы просто быстро видеть добавленную информацию, когда последовательность вызовов не заметна, я хотел бы, чтобы там была задержка, так что когда li-элементы добавляются, последовательность более очевидна, а не быстрее, когда трудно увидеть последовательность.
Вот код:
function runArray(arr, fn) {
// initialize array index - can't use for loop here with async
var index = 0;
function next() {
var cnt = +arr[index];
for (var i = 0; i < cnt; i++) {
fn(index, cnt);
}
// increment array index and see if there's more to do
++index;
if (index < arr.length) {
setTimeout(next, 400);
}
}
// start the whole process if the array isn't empty
if (arr.length) {
next();
}
}
runArray(thearray, shakeit);
и вот jsfiddle демонстрирует журнал быстрого добавления информации. Я хочу замедлить его, чтобы информация была добавлена достаточно медленно, чтобы было очевидно, что есть последовательность.
http://jsfiddle.net/jfriend00/Loycmb3b/
Ах, простое решение. Спасибо. Мой мозг слишком устал, чтобы понять это. – Brandon