Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.08.2011, 08:53
Аспирант
Отправить личное сообщение для RUVATA Посмотреть профиль Найти все сообщения от RUVATA
 
Регистрация: 08.02.2011
Сообщений: 41

Сообщение от float
никто ничего не должен. в том то и дело.
зашибись а зачем тогда у функций setTimeout и setInterval второй параметр, которым задается отсрочка или интервал ?
если:
Сообщение от float
функция будет выполняться в неизвестный момент времени.
Для красоты ?
Вот оф.реф для setInterval
Сообщение от float
Calls a function repeatedly, with a fixed time delay between each call to that function.
здесь что-то сказано про неопределенность ?
Ответить с цитированием
  #22 (permalink)  
Старый 19.08.2011, 09:01
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

var t = Date.now();
var str = '';
for(var i = 0; i<20; i++) {
    str +='afa';
}
alert(Date.now()-t);

Последний раз редактировалось float, 19.08.2011 в 09:23.
Ответить с цитированием
  #23 (permalink)  
Старый 19.08.2011, 09:06
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
проведите аналогичный эксперимент в NODE.js
тожесамое...
Ответить с цитированием
  #24 (permalink)  
Старый 19.08.2011, 09:07
Аспирант
Отправить личное сообщение для RUVATA Посмотреть профиль Найти все сообщения от RUVATA
 
Регистрация: 08.02.2011
Сообщений: 41

и...
мне alert-нуло '0'
это вы к чему ?
где тут асинхронность и вообще инструкция в 6-ой строке листинга 'str' это что ?
Ответить с цитированием
  #25 (permalink)  
Старый 19.08.2011, 09:16
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
и...
к тому, что 0 это приблизительно время выполнения вашей функции, а через интервал у вас только спустя 12 мс вызовется.
Цитата:
и вообще инструкция в 6-ой строке листинга 'str' это что
мусор из консоли завалялся

Последний раз редактировалось float, 19.08.2011 в 09:24.
Ответить с цитированием
  #26 (permalink)  
Старый 19.08.2011, 09:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от RUVATA
Т.е. по наступлению события или таймера, исполнение текущего контекста приостанавливается, и исполняется контекст назначенный, после чего возобновляется выполнение текущего...
Вы это сами только что придумали или вычитали где? Объясняю на пальцах

setTimeout(foo, 500);
bar();

Допустим функция bar выполняется 2 секунды. Тогда вопреки вашему желанию функция foo выполнится не через пол секунды, а через две, когда освободится поток. В общем случае запись setTimeout(foo, n) означает "запустить функцию foo не раньше чем через n миллисекунд", а не "запустить функцию foo через n миллисекунд".
Ответить с цитированием
  #27 (permalink)  
Старый 19.08.2011, 10:02
Аспирант
Отправить личное сообщение для RUVATA Посмотреть профиль Найти все сообщения от RUVATA
 
Регистрация: 08.02.2011
Сообщений: 41

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
и т.д.
(правила скрещивания обусловлены платформой, ресурсами под инструкцию и т.д.)
они не паралельны, но и не синхронны... они асинхронны.

Здесь-же мы наблюдаем псевдоасинхронность...
Ответить с цитированием
  #28 (permalink)  
Старый 19.08.2011, 10:10
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от RUVATA
зато callback-и прерывают выполнение как и ожидается
Разумеется, ведь emit синхронный. Откуда там асинхронности взяться?
Ответить с цитированием
  #29 (permalink)  
Старый 19.08.2011, 10:16
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
они не паралельны, но и не синхронны... они асинхронны.

Многозадачность

Последний раз редактировалось float, 19.08.2011 в 10:19.
Ответить с цитированием
  #30 (permalink)  
Старый 19.08.2011, 10:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Давайте по порядку. Асинхронная функция -- такая функция, которая сразу передаёт управление вызвавшему её коду, но продолжает в это время что-то делать и результат своей работы сообщает позже. Разумеется, продолжает что-то делать она в другом потоке, но этот другой поток реализован или на уровне платформы (XMLHttpRequest в браузере), или на уровне ОС (i/o в NodeJS). Сам JavaScript при этом остаётся однопоточным.

В случае использования setTimeout второй поток не нужен. Функция ничего не делает, пока ждёт запуска переданной в setTimeout функции, а ничего не делать можно и в одном потоке
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поведение hover в ИЕ7 ksa (X)HTML/CSS 7 27.05.2011 04:46
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
Cтранное поведение viktod Общие вопросы Javascript 23 10.04.2010 00:37
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16
Отменить поведение по умолчанию bool Общие вопросы Javascript 3 06.03.2009 16:59