LINUX.ORG.RU

История изменений

Исправление static_lab, (текущая версия) :

С замыканием ты это сделать не сможешь

function iterate(array, onEach, onDone) {
    let index = 0;
    let isCanceled = false;

    return [
        () => {
            if (isCanceled || index >= array.length) {
                onDone();
            } else {
                onEach(array[index++]);
            }
        },
        () => {
            isCanceled = true;
        }
    ];
}

const [doTick, cancel] = iterate(
    array,
    (value) => console.log(value),
    () => clearInterval(timer)
);

const timer = setInterval(doTick, 1000);

Исправление static_lab, :

С замыканием ты это сделать не сможешь

function iterate(array, onEach, onDone) {
    let index = 0;
    let isCanceled = false;

    return [
        () => {
            if (isCanceled || index < array.length) {
                onDone();
            } else {
                onEach(array[index++]);
            }
        },
        () => {
            isCanceled = true;
        }
    ];
}

const [doTick, cancel] = iterate(
    array,
    (value) => console.log(value),
    () => clearInterval(timer)
);

const timer = setInterval(doTick, 1000);

Исходная версия static_lab, :

С замыканием ты это сделать не сможешь

function iterate(array, onEach, onDone) {
    let index = 0;
    let isCanceled = false;

    return [
        () => {
            if (stop || index < array.length) {
                isCanceled();
            } else {
                onEach(array[index++]);
            }
        },
        () => {
            isCanceled = true;
        }
    ];
}

const [doTick, cancel] = iterate(
    array,
    (value) => console.log(value),
    () => clearInterval(timer)
);

const timer = setInterval(doTick, 1000);