04.09.2011, 20:33
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
По моему смешно эту тему мусолить, особенно в этом разделе. Давайте каждый останется при своем мнении, касательно того что является асинхронным - причина возникновения события или возможность языка реагировать на эту причину.
Если смотреть на любой проект на Node.js, который использует неблокирующий I\O для чтения сокета, то там в обработчиках запросов пользователей создается очень много подписчиков на разнообразные события и некоторые виды обработки (особенно нагруженные циклы) делаются в нулевых таймаутах, для того, чтобы передать управление серверу, не блокировать ход выполнения и выполнять итерацию в "свободное время", попутно принимая коннекты от клиентов. Если эта возможность не является асинхронностью (ведь код не синхронный и не выполняется параллельно, он просто разнесен по времени), то что является - я не знаю. Наверно только различный I/O. Но это вызывает сомнение, учитывая что и очередь, которая тут называлась, различные диспатчеры событий, event loop - это все аттрибуты асинхронных интерфейсов. Ну если это не так, пускай так и будет.
|
|
04.09.2011, 20:37
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Еще раз задумайтесь над своими же словами
Сообщение от dmitriymar
|
Сообщение от Андрей Параничев
Асинхронности нет в стандарте ECMA-262, но она есть в реализациях в браузерах и v8 (Node.js) в виде setTimeout\setInterval,
таймауты есть в ECMA-262 и в тоже время он не асинхронен-задумайтесь над тем что пишите
|
есть и одновременно нет? так не бывает,в стандарте сказано что они не являются асинхронными- значит любые примеры и доводы с ними не являются асинхронными. Или вы на вопрос о килограмме говорите что он зелёный?
Последний раз редактировалось dmitriymar, 04.09.2011 в 20:39.
|
|
04.09.2011, 20:38
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
dmitriymar,
Покажите мне таймауты в ECMA-262.
|
|
04.09.2011, 20:47
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Андрей Параничев,
не занимайтесь троллигонгом- тролите только себя. везде отталкиваюсь от ваших слов.
Последний раз редактировалось dmitriymar, 04.09.2011 в 20:49.
|
|
04.09.2011, 20:53
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
dmitriymar,
В стандарте ECMA-262 нет ни setTimeout/setInterval ни вообще чего-либо про обработчики событий. Но это все есть в реализациях в браузерах и в движке v8.
Причем тут троллинг? Просто читать внимательнее надо. В эту тему отвечать больше не буду, слишком уклонилась дискуссия от первоначальной.
|
|
04.09.2011, 20:56
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Андрей Параничев
|
В эту тему отвечать больше не буду, слишком уклонилась дискуссия от первоначальной.
|
Посчитаю согласием что пример изначальный был не корректным во всех смыслах
|
|
04.09.2011, 21:02
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от dmitriymar
|
По моему вы смешной. пару часов назад вы доказывали что это асинхронность в вашем примере.С моей стороны вы слышали что пример не имеет ничего общего с тем ,что вы пытаетесь доказать. сейчас уже это асинхронность не языка-то что изначально вам и говорил ,вы с пеной у рта отстаивали своё вплоть до того что очередь выполняется не последовательно.
|
Интересно где вы вычитали в моих постах что я что-то доказывал? Я лишь спрашивал какой вы можете привести пример отсутствия асинхронности, мне нет смысла доказвать то что в JS есть асинхронность, я в первом же посту написал что ее нет, а то какой я написал пример этого не меняет, возможно я привел не удачный пример, но я не выплевывал слюни изорта доказывая обратное.
|
|
04.09.2011, 21:12
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
dmitriymar,
Вы меня спутали с Kolyaj, это он с пеной из рта доказывал что в JS есть асинхронность. След. раз перечитайте тему перед тем как выдвигать подобные слова. Я лишь могу сказать что да возможно пример был неудачный. но увы другого примера я не знаю который бы показывал ОТСУТСТВИЕ асинхронности в JS.
|
|
04.09.2011, 21:21
|
|
Администратор
|
|
Регистрация: 25.05.2007
Сообщений: 1,221
|
|
setTimeout/setInterval были в оригинальной спецификации JavaScript от Sun, еще до появления Ecma. Это - то, что еще называют DOM-0. Вот эта спека (1997 год): http://download.oracle.com/docs/cd/E...-10/window.htm
Сейчас идет работа по стандартизации этих свойств в HTML 5: http://www.w3.org/TR/2009/WD-html5-2...no.html#timers
В зависимости от того, считаете ли вы эту оригинальную спецификацию стандартом или нет - метод и будет для вас стандартным или нестандартным.
Де-факто все реализации JS, браузерные и небраузерные, поддерживают этот метод.
P.S. Тему предлагаю разбить, вынести дискуссию в соответствующий раздел.
Последний раз редактировалось Илья Кантор, 04.09.2011 в 21:24.
|
|
04.09.2011, 21:25
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Эта спецификация говорит только о том, что:
Цитата:
|
The setTimeout(handler, timeout[, arguments...]) method takes a reference to a TimeoutHandler object and a length of time in milliseconds. It must return a handle to the timeout created, and then asynchronously wait timeout milliseconds and then queue a task to invoke handleEvent() on the handler object.
|
Все равно не ясно, являются ли события и таймауты (которые тоже события) частями асинхронного I/O? По логике работы с libevent, например, являются. Хотя тут сложно говорить, потому что асинхронность в программировании вообще не является термином.
|
|
|
|