Показать сообщение отдельно
  #1 (permalink)  
Старый 27.04.2018, 14:45
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Можно ли применять setTimeout внутри цикла?
У меня внутри события через setTimeout вызываются функции.
Работающий пример:
document.querySelector('#shag3').addEventListener('click', function () {
    setTimeout(brus1, 400);
    setTimeout(brus2, 800);
    setTimeout(brus3, 1200);
    setTimeout(brus4, 1600);
    setTimeout(brus5, 2000);
    setTimeout(brus6, 2400);
    setTimeout(brus7, 2800);
    setTimeout(brus8, 3200);
    setTimeout(brus9, 3600);
    setTimeout(brus10, 4000);
    setTimeout(brus11, 4400);
    setTimeout(brus12, 4800);
    setTimeout(brus13, 5200);
    setTimeout(brus14, 5600);
    setTimeout(brus15, 6000);
    setTimeout(brus16, 6400);
    setTimeout(brus17, 6800);
    setTimeout(brus18, 7200);
    setTimeout(brus19, 7600);
    setTimeout(brus20, 8000);
)}


Это урезанный вариант, на самом деле у меня setTimeout в разных обработчиках событий от 50 до 400 штук.
Поэтому я пытаюсь сделать это циклом и делаю так:
document.querySelector('#shag3').addEventListener('click', function () {
   for (let i = 0; i < 50; i++) {
        let name_function = 'brus' + i;
        let time;
        
        if(i == 0) time = 10;
        else time = 400 * i;

        setTimeout(name_function, time);

        console.log(name_function + ' и ' + time);
    }
)}

но это не работает - функции из setTimeout не вызываются : (
При этом в console.log выводятся правильные значения.

Поэтому у меня вопрос: а можно ли применять setTimeout внутри цикла?
Ответить с цитированием