Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2010, 15:20
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

вопрос про onreadystatechange
Здравствуй, достопочтенный ALL.

Объясните плз, все используют классическую готовность ответа, но почему ее не свести к записи if(request.readyState == 4 && request.status == 200){...}
И если в теле функции будет использоваться семеричный метод, то будет ли подвисание браузера? Или функция выполняется в отдельном потоке.

З.Ы. Я нуб и если что-то написал не так, строго не судите. С удовольствием выслушаю замечания.
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2010, 15:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от vladlen
Объясните плз, все используют классическую готовность ответа, но почему ее не свести к записи if(request.readyState == 4 && request.status == 200){...}
эм?
покажите какую модель вы считаете классической, и в чем отличие от вашей записи?
полным кодом, пожалуйста
Сообщение от vladlen
семеричный метод
что такое семеричный метод?
Сообщение от vladlen
Или функция выполняется в отдельном потоке.
какая функция?
вы имеет ввиду обработчик события onreadystatechange?
в любом случае, в JS нету отдельных потоков, чтобы что-то могло в нем выполнятся.
JS - однопоточный язык
Ответить с цитированием
  #3 (permalink)  
Старый 19.10.2010, 15:52
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Gvozd Посмотреть сообщение
покажите какую модель вы считаете классической, и в чем отличие от вашей записи?
if(readyState == 4){
  if(request.status == 200){
    ...
  }
}

Данная конструкция применяется в подавляющем большинстве скриптов. Вот меня и интересует вопрос: это чисто иллюстративная форма записи или есть какие-то предпосылки (глюки) к ее использованию.

Сообщение от Gvozd Посмотреть сообщение
что такое семеричный метод?
Сихронный запрос без обработчика onreadystatechange. Сорри термины таки разные

Сообщение от Gvozd Посмотреть сообщение
вы имеет ввиду обработчик события onreadystatechange?
в любом случае, в JS нету отдельных потоков, чтобы что-то могло в нем выполнятся.
JS - однопоточный язык
По контексту функции обработчика сразу видно что метод onreadystatechange циклический, а в случае работы цикла в одном потоке проявляется то самое "подвисание", ожидание окончания цикла.
JS - однопоточный язык, но некоторые его функции/методы объектов таки порождают потоки, пусть и в не явном виде.
Ответить с цитированием
  #4 (permalink)  
Старый 19.10.2010, 16:00
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от vladlen
Данная конструкция применяется в подавляющем большинстве скриптов. Вот меня и интересует вопрос: это чисто иллюстративная форма записи или есть какие-то предпосылки (глюки) к ее использованию.
отсыпьте что курили.
я слабо представляю как можно было допустить мысль, что есть какая-то разница между этими двумя записями.
Сообщение от vladlen
Сорри термины таки разные
нигде, ни разу нен видел вашего термина.
по-моему вы несете отсебятину.
Сообщение от vladlen
По контексту функции обработчика сразу видно что метод onreadystatechange циклический
чего?
в каком контексте вы увидели, что он циклический?
никакого отношения к циклам он не имеет, в принципе
Сообщение от vladlen
а в случае работы цикла в одном потоке проявляется то самое "подвисание", ожидание окончания цикла.
какого цикла?
вы несете бред.
при использовании синхронного AJAX, будет подвисание.
так как ожидается ответ.
никакие циклы тут не при чем.
Сообщение от vladlen
JS - однопоточный язык, но некоторые его функции/методы объектов таки порождают потоки, пусть и в не явном виде.
нет
JS - Однопоточный, и точка.
то, что вы воспринимаете его работу как многопоточность, это исключительно ваши домыслы.
и никто никаких потоков не порождает.
все работает в одном потоке, по-очереди.
Ответить с цитированием
  #5 (permalink)  
Старый 19.10.2010, 16:52
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Gvozd Посмотреть сообщение
отсыпьте что курили.
Не могу, кончилось

Сообщение от Gvozd Посмотреть сообщение
я слабо представляю как можно было допустить мысль, что есть какая-то разница между этими двумя записями.
Как это нет разницы? А если подумать? Отсюда и возможность поиметь проблем.


Сообщение от Gvozd Посмотреть сообщение
нигде, ни разу нен видел вашего термина.
по-моему вы несете отсебятину.
Неужели вы никогда в жизни не сышали о слове "симметрия"? А то что данный термин был использован не по существу я вроде как извенился и поправился.

Сообщение от Gvozd Посмотреть сообщение
в каком контексте вы увидели, что он циклический?
никакого отношения к циклам он не имеет, в принципе
какого цикла?
вы несете бред.
Уважаемый, я бред не несу. Не стоит пытаться всех опускать до своего уровня и флудить почем зря. Метод вызывается последовательно аж 4 раза. И кто же его по вашему вызывает? Темная материя?
Спорить на эту риторическую тему я более не намерен.

Сообщение от Gvozd Посмотреть сообщение
при использовании синхронного AJAX, будет подвисание.
так как ожидается ответ.
Вопрос в том что синхронный запрос завернут в асинхронный. Будел ли в таком случае "подвисание"? Вопрос к тому, что на http://xmlhttprequest.ru есть пример работы с кэшем, но он чисто синхронный. Но если функция обработчик onreadystatechange (работа в асихронном режиме) будет содержать синхронный запрос, то будет ли в таком случае "подвисать"?

Сообщение от Gvozd Посмотреть сообщение
JS - Однопоточный, и точка.
А кто бы спорил?
Ответить с цитированием
  #6 (permalink)  
Старый 20.10.2010, 00:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от vladlen
Как это нет разницы? А если подумать? Отсюда и возможность поиметь проблем.
ну и какая же разница может быть?
расскажите мне несведующему
Сообщение от vladlen
Не стоит пытаться всех опускать до своего уровня и флудить почем зря
Если бы вы ваш уровень понимания вопроса стал бы на таком уровне как и мой, то вы сильно его подняли.
а вот то, что я пытаюсь вас "унизить", заявляя, что вы несете бред, так это правда.
вы реально не владеете вопросом, и реально несете бред.
причем уровень вашего владения вопросом отрицательный, я б сказал.
то, что вы говорите неверно, и мысли такого рода встречаются крайне редко на этом форуме, хотя через него прошла не одна тысяча новичков.
я щаз говорю не только о вашем заявлении и циклах, а вообще о всех ваших мыслях выраженных в теме.
Сообщение от vladlen
Метод вызывается последовательно аж 4 раза. И кто же его по вашему вызывает? Темная материя?
сетевая карта посылает прерывание процессору.
он назначает на ближайший свободный квант времени выполнение сетевого драйвера с получением принятых данных.
тот в свою очередь обрабатывает данные, и передает управление дальше
в конечном итоге, вызывается код браузера, ответственный за обработку принятого HTTP-запроса.
тот анализирует, и при необходимости вызывает обработчик события уже внутри JS-движка, по сути говоря "поставь в очередь выполнение onreadystatechange"

как видим никаких циклов.
возможно, я немного напутал с тем, что творится на низком урвоне, но точно могу сказать:
на уровне JS и браузера этот код вызывается ну никак не циклом.
а если на более низком уровне есть циклы, то они есть и в других событиях с таким же успехом
Сообщение от vladlen
Вопрос в том что синхронный запрос завернут в асинхронный. Будел ли в таком случае "подвисание"?
Разве не очевидно?!
до тех пока не прийдет ответ от первого ассинхронного запроса, зависания не будет. затем, когда будет послан синхронный запрос, барузер естесвтенно зависнет
Сообщение от vladlen
А кто бы спорил?
Сообщение от vladlen
JS - однопоточный язык, но некоторые его функции/методы объектов таки порождают потоки, пусть и в не явном виде.
вы спорите, говоря, что в JS некоторые его функции/методы объектов таки порождают потоки
Ответить с цитированием
  #7 (permalink)  
Старый 20.10.2010, 12:22
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Gvozd Посмотреть сообщение
ну и какая же разница может быть?
расскажите мне несведующему
Вот подумал я и пришел к выводу что никакой, т.к. выражение 2 вычислять смысла не имеет если выражение 1 ложно.

Gvozd, насчет уровней знания напылил, прошу прощения.
Оффтоп: как минимум квантование и есть процесс циклический и прервородный, хотя прерывание и будет отработано, JS не получит управления до очередного выделения ему его кванта. На уровне браузера сам метод onreadystatechange находится в режиме ожидания (ждет некоего события) и соответственно работает в цикле.

Сообщение от Gvozd Посмотреть сообщение
Разве не очевидно?!
Спасибо, теперь очень даже очевидно!


Сообщение от Gvozd Посмотреть сообщение
вы спорите, говоря, что в JS некоторые его функции/методы объектов таки порождают потоки
Да, например таймер.
Ответить с цитированием
  #8 (permalink)  
Старый 20.10.2010, 12:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vladlen
Да, например таймер.
Да не порождает он потоки. Всё выполнится в том же потоке, но в другом "тике".
Ответить с цитированием
  #9 (permalink)  
Старый 20.10.2010, 16:51
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Kolyaj Посмотреть сообщение
Всё выполнится в том же потоке, но в другом "тике".
Никаких "тиков" не существует!
Весь JS код выполняется в едином потоке.
Для тех кто ничего не понял из вышеописанной дискуссии: метод onreadystatechange, как и таймеры выполняются в отдельных потоках процесса браузера, содержат указатели на функции определенные в них, которые, в свою очередь, будут отрабатываться в рамках единого потока JS.

Gvozd, спасибо! +1 в карму
Ответить с цитированием
  #10 (permalink)  
Старый 20.10.2010, 16:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vladlen
Никаких "тиков" не существует!
Потому и в кавычках.

Поставим вопрос по другому. Можно поставить два таймера таким образом, чтобы они выполнились одновременно?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Вопрос про scope B~Vladi Общие вопросы Javascript 20 19.06.2010 15:14
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
вопрос про <select> Krondor Общие вопросы Javascript 2 25.11.2009 17:04
Вопрос про отправку данных методом Post QQQ AJAX и COMET 1 15.07.2009 23:27