Почему setTimeout (fn, 0) иногда полезен?

f.write() записывается в собственный буфер процесса Python (аналогично функциям C fwrite()). Однако данные фактически не заливаются в буферы ОС, пока вы не назовете f.flush() или f.close(), или когда буфер заполнится. После этого данные становятся видимыми для всех других приложений.

Обратите внимание, что ОС выполняет другой уровень буферизации / кэширования, который используется всеми запущенными приложениями. Когда файл сбрасывается, он записывается в эти буферы, но еще не записан на диск , пока не пройдет некоторое время, или когда вы вызываете fsync(). Если ваша ОС сбой или компьютер потеряет питание, такие несохраненные изменения будут потеряны.

829
задан refactor 14 July 2016 в 12:38
поделиться

3 ответа

Это работает, потому что вы выполняете совместную многозадачность.

Браузер должен делать сразу несколько вещей, и только одна из них - это выполнение JavaScript. Но одна из вещей, для которой JavaScript очень часто используется - это попросить браузер создать элемент отображения. Часто предполагается, что это делается синхронно (в частности, поскольку JavaScript не выполняется параллельно), но нет никакой гарантии, что это так, и JavaScript не имеет четко определенного механизма ожидания.

Решение состоит в том, чтобы «приостановить» выполнение JavaScript, чтобы позволить потокам рендеринга наверстать упущенное. И это тот эффект, который делает setTimeout () с таймаутом 0 . Это как выход потока / процесса в C. Хотя, кажется, он говорит: «Запустите это немедленно»

784
ответ дан 22 November 2019 в 21:14
поделиться

Вызывая setTimeout, вы даете странице время реагировать на то, что делает пользователь. Это особенно полезно для функций, запускаемых во время загрузки страницы.

1
ответ дан 22 November 2019 в 21:14
поделиться

setTimeout () покупает вас некоторое время, пока элементы DOM не загружаются, даже если установлено значение 0.

Проверьте это: setTimeout

21
ответ дан 22 November 2019 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: