История изменений
Исправление 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);