2008-11-11 2 views

ответ

4

Он запускает код асинхронно (не параллельно). Задержка обычно изменяется до минимума 10 мс, но это не имеет значения.

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

Вы также можете использовать его, чтобы избежать блокировки текущей резьбы. Например, если вы не хотите <script> элемента для задержки загрузки страницы:

<script>compute_last_pi_digit()</script> <!-- blocking --> 

<script>setTimeout(compute_last_pi_digit,0)</script> <!-- non-blocking --> 
4

http://blog.thinkature.com/index.php/2006/11/26/escaping-the-javascript-call-stack-with-settimeout/

Некоторые хорошая информация там. В принципе, вы правы, и он работает практически во всех браузерах. Прохладный трюк.

Вы хотели бы использовать это в примере, который дал автор сообщения, а также в случаях, когда вам нужно вернуть выполнение функции вызова до того, как ваш код будет выполнен. Javascript, по-видимому, не многопоточен, но это близко.

Надеется, что это помогает :)

+0

Спасибо, я прыгнул, этот вопрос породил пару хороших ссылок. – FriendOfFuture 2008-11-11 23:48:54

1

Это ansynchronously вызову функции, как только какие-либо другие ожидающие указания по теме делаются (что сразу же, если не какие-либо есть) и возвращает управление UI. Вы должны использовать его в обработчике событий, где вы не хотите запускать код, пока событие все еще пропущено *. Он работает со всеми браузерами.

0

Думайте о нем, как создание ПРЕРЫВАЙТЕ вектор обратно в старые времена.

Он не будет обрабатывать этот код параллельно, но вместо этого он будет прыгать и выполнять его, когда запускается событие (в данном случае, завершение таймера).

0

Я нашел это очень полезным для избежания условий гонки, когда несколько обработчиков событий увольняются из одного и того же действия.

Смежные вопросы