Страницы

Поиск по вопросам

вторник, 26 февраля 2019 г.

Моментальное выполнение в timeout

Показали код из сторонней библиотеки. Какие тонкие моменты могли заставить автора в таймауте поставить время ноль?
setTimeout(function () { //todo something }, 0);


Ответ

Этот способ может понадобиться, если потребуется асинхронное выполнение кода.
Например
console.log("1"); console.log("2"); console.log("3");
выведет, как и предполагается: 1 2 3
Однако, при добавлении setTimeout получится: 1 3 2
console.log("1"); setTimeout(function() { console.log("2"); }, 0); console.log("3"); // > 1 3 2
Это связано с тем, что выполнение функции откладывается до следующего витка event loop.

Комментариев нет:

Отправить комментарий