#javascript #jquery
#javascript #jquery
Вопрос:
Как я могу запустить setInterval
после завершения предыдущего?
У меня есть следующий код:
const interval = setInterval(function () {
prePost();
array = images;
main(current);
if (current < array.length - 1) {
current
} else {
clearInterval(interval)
}
}(), 6200);
const interval2 = setInterval(function () {
prePost();
array = objects;
main(current);
if (current < array.length - 1) {
current
} else {
clearInterval(interval2)
}
}(), 6200);
И я хочу interval2
быть выполненным, но не до interval
тех пор, пока не будет очищен и даже третий. Как этого можно достичь? Прямо сейчас они оба выполняются одновременно.
Комментарии:
1. запустите его там, где вы выполняете clearInterval — или вы могли бы сделать
const start2 = () => { const interval2 = ...rest of that code ... };
, а затем просто вызватьstart2()
afterclearInterval(interval)
…2. Поскольку у вас много повторяющегося кода, было бы лучше извлечь ваш код для запуска интервала в функцию, если вы затем заставите его возвращать обещание, которое разрешается при вызове clear interval . вы можете использовать это для цепочки любого количества интервалов один за другим.
Ответ №1:
Определите setInterval
for interval2
сразу после clearInterval
для первой interval
переменной, и это будет вызвано после очистки первого интервала.
let interval2 = null;
const interval = setInterval(function () {
prePost();
array = images;
main(current);
if (current < array.length - 1) {
current
} else {
clearInterval(interval);
interval2 = setInterval(function () {
prePost();
array = objects;
main(current);
if (current < array.length - 1) {
current
} else {
clearInterval(interval2)
}
}(), 6200);
}
}(), 6200);
Комментарии:
1. я попробовал ваш ответ, но, похоже, есть проблема. Массив изображений содержит 5 элементов, и я ожидаю, что код в main() будет выполнен 5 раз. Прямо сейчас он выполняется только один раз, а затем останавливается. Я не вижу никаких ошибок в консоли.
2. Я думаю, что есть проблема со
array
значением. Вы зарегистрировалиarray
значение иcurrent
значение на консоли и дали мне знать? В коде нет проблем.3. Это массив: ` var images = [ { id: 0, img: ‘resources/mentalImg/img/carretera.jpeg ‘, текст: ‘000’ }, {идентификатор: 1, img: ‘resources/mentalImg/img/ciudad.jpg ‘, текст: ‘000’ }, {идентификатор: 2, img: ‘resources/mentalImg/img/construccion.jpeg ‘, текст: ‘000’ }, { id: 3, img: ‘resources/mentalImg/img/fabrica.jpg ‘, текст: ‘000’ }, { идентификатор: 4, img: ‘resources/mentalImg/img/terreno.jpg ‘, текст: ‘000’ }, ];` и ток равен 0.