Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 04.09.2011, 19:00
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

setTimeout(function() {alert(1)},1);
 setTimeout(function() {alert(2)},0);

код по разному отработает в фф6 и в опере 11.90 в более старых браузерах задержку можно и больше ставить
Ответить с цитированием
  #42 (permalink)  
Старый 04.09.2011, 19:01
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

dmitriymar,
Вы можете подытожить то, что вы хотите сказать? Что в JavaScript помимо XmlHttpRequest все работает синхронно?
Задержка, как факт в отложенном выполнении обработчиков, не важна. Можно поставить 1 вместо нуля, в среднем все браузеры при 0 ставят выполнение через 4ms.
Ответить с цитированием
  #43 (permalink)  
Старый 04.09.2011, 19:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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

Последний раз редактировалось dmitriymar, 04.09.2011 в 19:11.
Ответить с цитированием
  #44 (permalink)  
Старый 04.09.2011, 19:16
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

dmitriymar,
Я вообще говорю про асинхронность выполнения кода. Асинхронность очереди это что-то, что вы притянули к обсуждению не очень понятно зачем, ведь это уже издержка реализации. К тому же это не везде верно. Опять же гарантировано неверно это в Node.js и клиентском коде по крайней мере в chrome и firefox. Проверить кухонный комбайн и IE у меня возможности в данный момент нет. Но даже если "очередь" формируется и потом выполняется шаг за шагом, если она сформирована асинхронно, по требованию, то это означает асинхронность кода.

В контексте обсуждения не важно, какой таймаут сработает первым. Важно только то, что alert(0); сработает в начале.
setTimeout(function() { alert(1); }, 1);
setTimeout(function() { alert(2); }, 0);
alert(0);
Ответить с цитированием
  #45 (permalink)  
Старый 04.09.2011, 19:23
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Андрей Параничев
В контексте обсуждения не важно, какой таймаут сработает первым. Важно только то, что alert(0); сработает в начале.
ну дак этот пример -сокращённый код что вы привели ранее-всё сведено к 3м строкам .гдеже здесь асинхронность? с учетом того что в разных браузерах последовательность будет разной? здесь последовательность-сначала код,затем очередь,а события в очередь станут по разному в разных браузерах. а та "асинхронность" какую вы пытались доказать -это различная реализация в браузерах задержки и поведения очереди.
Сообщение от Андрей Параничев
если она сформирована асинхронно, по требованию, то это означает асинхронность кода.
если бы это было так,то об асинхронности языка говорили бы с момента появления очереди.
Это всего лишь говорит о том что очередь формируется асинхронно с выполнением кода.
а вот яакс асинхронен запрос оправляется и код выполняется,но аякс объект не часть языка,в принципе как и объект очередь наверное-браузерная реализация возможно.поэтому аякс асинхронен к коду и постановка в очередь асинхронна.

Последний раз редактировалось dmitriymar, 04.09.2011 в 19:37.
Ответить с цитированием
  #46 (permalink)  
Старый 04.09.2011, 19:35
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

dmitriymar,
Мне нечего вам ответить, если вы не видите асинхронности в строке, в которой есть setTimeout. Правда, давайте свернем дискуссию. Понятие "очередь" в языке вообще не определено. Асинхронность, по сути, является разнесением выполнения кода по времени, в частных случаях: наступлению внешних событий (в setTimeout - по срабатыванию таймера), в случае ajax асинхронность в том, что вы описываете callback, который выполняется по событиям от XmlHttpRequest, а не в том, что сам объект XmlHttpRequest запрашивает сайт в отдельном потоке.

Последний раз редактировалось Андрей Параничев, 04.09.2011 в 19:47.
Ответить с цитированием
  #47 (permalink)  
Старый 04.09.2011, 20:03
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Андрей Параничев,
Вы очень смешной человек, скажу вам прямо, что будь асинхронность в языке JavaScript он был бы не таким уж простым языком. А все события что посылает браузер, будь то мышь, клава, или еще чего, это лишь поток браузера который синхронизируется с вашим скриптом/приложением и внедряется по среди выполнения основного кода. Асинхронные приложения очень сложно писать, и будь она в яваскрипт люди жаловались бы не на то как получить ДИВ оттуда-то или отсюда-то.. А на то почему происходят неожиданности, ибо синхронизация приводит к тому что две нити ( в нашем случае это кассир и его помощник ) могут привести к неожиданной ошибке, при записи/запросе одних и тех же данных, то-есть например кассир хочет взять деньги и его помощник тоже.. То-есть запрос одних и тех же данных приводит как правило к ступору. Хотя подобная ситуация и не особо страшна, но при записи данных кто-то может их так же записывать. Это и есть асинхронность, когда данные портятся без контроля синхронизации. Поэтому в JS все события синхронизируются.
Ответить с цитированием
  #48 (permalink)  
Старый 04.09.2011, 20:18
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

devote,
Асинхронности нет в стандарте ECMA-262, но она есть в реализациях в браузерах и v8 (Node.js) в виде setTimeout\setInterval, работы с событиями DOM и XmlHttpRequest. То, о чем вы говорите называется многопоточностью и в JavaScript её нет.
Ответить с цитированием
  #49 (permalink)  
Старый 04.09.2011, 20:24
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от devote
Вы очень смешной человек, скажу вам прямо, что будь асинхронность в языке JavaScript он был бы не таким уж простым языком. А все события что посылает браузер, будь то мышь, клава, или еще чего, это лишь поток браузера который синхронизируется с вашим скриптом/приложением и внедряется по среди выполнения основного кода...
По моему вы смешной. пару часов назад вы доказывали что это асинхронность в вашем примере.С моей стороны вы слышали что пример не имеет ничего общего с тем ,что вы пытаетесь доказать. сейчас уже это асинхронность не языка-то что изначально вам и говорил ,вы с пеной у рта отстаивали своё вплоть до того что очередь выполняется не последовательно.
Сообщение от Андрей Параничев
Очередь не синхронная. Попробуйте сами поставить 100 нулевых таймаутов и в это время словить событие клика на странице. Он...
Определитесь уже. С одним хоть уже определились-что ваш пример не является асинхронным даже в плане асинхронной постановки в очередь.

Последний раз редактировалось dmitriymar, 04.09.2011 в 20:30.
Ответить с цитированием
  #50 (permalink)  
Старый 04.09.2011, 20:33
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Книга] Stoyan Stefanov, Javascript Patterns Dmitry A. Soshnikov Учебные материалы 20 13.08.2013 11:37
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34