Здравствуйте. Пытаюсь настроить функцию setInterval, сама по себе она работает, но стоит только после неё поставить clearInterval, то setInterval даже не запускается. Самый простейший пример с Espruino.com и тот не работает. Срабатывает только если закомментировать вторую строку. В чем может быть проблема? Я что-то делаю не так? Перед работой прошил свою Iskra JS последней прошивкой. Код (Javascript): var id_f = setInterval(function () { print('foo'); }, 1000); clearInterval(id_f);
Смотри, интерпретатор последовательно выполняет инструкции, первая строка: 1. установить таймер и через секунду напечатать "foo" - установил, время пошло, через секунду будет напечатано. Вторая строка, выполняем следующую инструцию: 2. Сбросить этот таймер - выполнил, сбросил. Когда же ему успеть напечатать "foo"? Скрипт только устанавливает да тут же сбрасывает таймер.
Откуда видно, что не запускается? Запускается и нормально исполняется. Просто если дать последовательность команд "стой там, иди сюда", всегда кажется. что первая не исполняется.
Разобрался, благодарю за ответы. Проблемы крылась в неточном понимании значений этих методов. setInteravl исполняет функцию, только выждав заданное время, clearInterval нужно привязать к какому-то событию или загнать в setTimeout, чтобы отложить исполнение
А что, там есть какие-то проблемы? Функцию отдельно - ещё и читабельнее выйдет, а по сути также. А если ++, то можно и практически в точности также. Только зачем? Никогда не понимал увлечения лямбдами ради лямд. Есть тут один деятель - прочитал где-то, что в С++ лямбды есть, так теперь пихает их во все дыры.