Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Асинхронность в JavaScript (https://javascript.ru/forum/events/21311-asinkhronnost-v-javascript.html)

Андрей Параничев 04.09.2011 20:33

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

Если смотреть на любой проект на Node.js, который использует неблокирующий I\O для чтения сокета, то там в обработчиках запросов пользователей создается очень много подписчиков на разнообразные события и некоторые виды обработки (особенно нагруженные циклы) делаются в нулевых таймаутах, для того, чтобы передать управление серверу, не блокировать ход выполнения и выполнять итерацию в "свободное время", попутно принимая коннекты от клиентов. Если эта возможность не является асинхронностью (ведь код не синхронный и не выполняется параллельно, он просто разнесен по времени), то что является - я не знаю. Наверно только различный I/O. Но это вызывает сомнение, учитывая что и очередь, которая тут называлась, различные диспатчеры событий, event loop - это все аттрибуты асинхронных интерфейсов. Ну если это не так, пускай так и будет.

dmitriymar 04.09.2011 20:37

Еще раз задумайтесь над своими же словами
Цитата:

Сообщение от dmitriymar
Сообщение от Андрей Параничев
Асинхронности нет в стандарте ECMA-262, но она есть в реализациях в браузерах и v8 (Node.js) в виде setTimeout\setInterval,
таймауты есть в ECMA-262 и в тоже время он не асинхронен-задумайтесь над тем что пишите

есть и одновременно нет? так не бывает,в стандарте сказано что они не являются асинхронными- значит любые примеры и доводы с ними не являются асинхронными. Или вы на вопрос о килограмме говорите что он зелёный?

Андрей Параничев 04.09.2011 20:38

dmitriymar,
Покажите мне таймауты в ECMA-262.

dmitriymar 04.09.2011 20:47

Андрей Параничев,
не занимайтесь троллигонгом- тролите только себя. везде отталкиваюсь от ваших слов.

Андрей Параничев 04.09.2011 20:53

dmitriymar,
В стандарте ECMA-262 нет ни setTimeout/setInterval ни вообще чего-либо про обработчики событий. Но это все есть в реализациях в браузерах и в движке v8.

Причем тут троллинг? Просто читать внимательнее надо. В эту тему отвечать больше не буду, слишком уклонилась дискуссия от первоначальной.

dmitriymar 04.09.2011 20:56

Цитата:

Сообщение от Андрей Параничев
В эту тему отвечать больше не буду, слишком уклонилась дискуссия от первоначальной.

Посчитаю согласием что пример изначальный был не корректным во всех смыслах

devote 04.09.2011 21:02

Цитата:

Сообщение от dmitriymar
По моему вы смешной. пару часов назад вы доказывали что это асинхронность в вашем примере.С моей стороны вы слышали что пример не имеет ничего общего с тем ,что вы пытаетесь доказать. сейчас уже это асинхронность не языка-то что изначально вам и говорил ,вы с пеной у рта отстаивали своё вплоть до того что очередь выполняется не последовательно.

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

devote 04.09.2011 21:12

dmitriymar,
Вы меня спутали с Kolyaj, это он с пеной из рта доказывал что в JS есть асинхронность. След. раз перечитайте тему перед тем как выдвигать подобные слова. Я лишь могу сказать что да возможно пример был неудачный. но увы другого примера я не знаю который бы показывал ОТСУТСТВИЕ асинхронности в JS.

Илья Кантор 04.09.2011 21:21

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:25

Эта спецификация говорит только о том, что:
Цитата:

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, например, являются. Хотя тут сложно говорить, потому что асинхронность в программировании вообще не является термином.


Часовой пояс GMT +3, время: 14:10.