Цитата:
если: Цитата:
Вот оф.реф для setInterval Цитата:
|
var t = Date.now(); var str = ''; for(var i = 0; i<20; i++) { str +='afa'; } alert(Date.now()-t); |
Цитата:
|
и... :)
мне alert-нуло '0' это вы к чему ? где тут асинхронность и вообще инструкция в 6-ой строке листинга 'str' это что ? |
Цитата:
Цитата:
|
Цитата:
setTimeout(foo, 500); bar(); Допустим функция bar выполняется 2 секунды. Тогда вопреки вашему желанию функция foo выполнится не через пол секунды, а через две, когда освободится поток. В общем случае запись setTimeout(foo, n) означает "запустить функцию foo не раньше чем через n миллисекунд", а не "запустить функцию foo через n миллисекунд". |
PS: :) кстати по поводу NODE.js я погорячился setTimeout и setInterval работают точно так-же ... виноват... зато callback-и прерывают выполнение как и ожидается
var events = require("events"); var emitter = new events.EventEmitter; // создаём генератор var someText = ''; // задаём обработчик пользовательского события "event1" emitter.on("event1", function(data) { if(){} someText = someText + '-Async-' }); for(var i = 0; i < 20; i++){ someText = someText + '-MainThead-'; emitter.emit("event1"); } console.log(someText) ... PPS: Вы безусловно правы ВСЕ... вы описываете реальное положение вещей. НО ЭТО НЕ АСИНХРОННОСТЬ ! Нельзя функцию с отложенным вызовом называть асинхронной. Это просто функция с отложенным вызовом и не более того. Асинхронно - это не синхронно... то есть код будет выполняться в одном потоке но в смешанном режиме, по крайней мере такова асинхронность в низкоуровневом программировании. когда выполнение двух функции (func1 и func2) в асинхронном режиме выглядит как-то так: Выполняется инструкция из func1 Выполняется инструкция из func2 Выполняется инструкция из func1 Выполняется инструкция из func2 Выполняется инструкция из func2 Выполняется инструкция из func1 и т.д. (правила скрещивания обусловлены платформой, ресурсами под инструкцию и т.д.) они не паралельны, но и не синхронны... они асинхронны. Здесь-же мы наблюдаем псевдоасинхронность... |
Цитата:
|
|
Давайте по порядку. Асинхронная функция -- такая функция, которая сразу передаёт управление вызвавшему её коду, но продолжает в это время что-то делать и результат своей работы сообщает позже. Разумеется, продолжает что-то делать она в другом потоке, но этот другой поток реализован или на уровне платформы (XMLHttpRequest в браузере), или на уровне ОС (i/o в NodeJS). Сам JavaScript при этом остаётся однопоточным.
В случае использования setTimeout второй поток не нужен. Функция ничего не делает, пока ждёт запуска переданной в setTimeout функции, а ничего не делать можно и в одном потоке :) |
Часовой пояс GMT +3, время: 15:07. |