Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: асинхронность ajax запроса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
Pavelbeginner
Отправлено: 09 Августа, 2013 - 16:22:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




На сколько я знаю т.к. js однопоточный, то в браузерах используются очереди. То есть, например, сработало событие click, обработчик этого события стал в очередь, тут же сработало событие focus и обработчик focus стал в очередь вслед за click. Пока обработчик click-а не отработает, обработчик focus-а н вызовется.

С ajax-ом тоже самое, когда вернется результат от сервера, то обработчик complete встанет в очередь.

Но у меня почему-то по-другому. Ставлю alert в обработчеке click, перед alert-ом делаю ajax запрос, в complete которого делаю alert. В итоге имею: идет ajax запрос, далее алерт выводится, через секунду выводится второй алерт из complete.
Почему отрабатывает код из complete в аяксе параллельно основному коду, а не ставится в очередь?
 
 Top
eai
Отправлено: 09 Августа, 2013 - 16:30:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




Код в студию
 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Августа, 2013 - 16:32:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner пишет:
Почему отрабатывает код из complete в аяксе параллельно основному коду, а не ставится в очередь?

Слово "асинхронный" Вам не о чём не говорит ?
 
 Top
Pavelbeginner
Отправлено: 09 Августа, 2013 - 16:35:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




armancho7777777 пишет:
Слово "асинхронный" Вам не о чём не говорит ?
Асинхронный запрос, но сам js однопоточный, основан на очереди выполнения.
Или я не прав?

(Отредактировано автором: 09 Августа, 2013 - 16:36:11)

 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Августа, 2013 - 17:06:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner, какой смысл несёт в себе словосочетание "асинхронный запрос" ?

Pavelbeginner пишет:
То есть, например, сработало событие click, обработчик этого события стал в очередь, тут же сработало событие focus и обработчик focus стал в очередь вслед за click. Пока обработчик click-а не отработает, обработчик focus-а н вызовется.

Вы где начитались этих определений ?
Какие очереди? Вы о чём говорите ?
Какое событие произойдёт раньше: взмах руки, или удар по лбу ?
И почему не наоборт ?
mousedown [-> focus (blur)] -> click -> mouseout.
И никаких очередей.
Произошло событие "mousedown", значит ждите события "click" и "mouseout".
Причина -> следствие.

Касательно ajax-а: Вы можете совершить сотню запросов и продолжать дальше что-то выполнять.
И когда, в какой последовательности вернутся ответы, - не известно.
 
 Top
nerv
Отправлено: 09 Августа, 2013 - 17:20:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




Pavelbeginner пишет:
я знаю т.к. js однопоточный

уже нет многопоточность в JavaScript

Почему вы не продолжили обсуждение в этой теме? Зачем создавать новую, для аналогичного вопроса?


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Pavelbeginner
Отправлено: 09 Августа, 2013 - 17:58:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




armancho7777777 пишет:
Pavelbeginner, какой смысл несёт в себе словосочетание "асинхронный запрос" ?

Pavelbeginner пишет:
То есть, например, сработало событие click, обработчик этого события стал в очередь, тут же сработало событие focus и обработчик focus стал в очередь вслед за click. Пока обработчик click-а не отработает, обработчик focus-а н вызовется.

Вы где начитались этих определений ?
Какие очереди? Вы о чём говорите ?
Какое событие произойдёт раньше: взмах руки, или удар по лбу ?
И почему не наоборт ?
mousedown [-> focus (blur)] -> click -> mouseout.
И никаких очередей.
Произошло событие "mousedown", значит ждите события "click" и "mouseout".
Причина -> следствие.

Касательно ajax-а: Вы можете совершить сотню запросов и продолжать дальше что-то выполнять.
И когда, в какой последовательности вернутся ответы, - не известно.


Читал некогда толстенную книгу по js-у, с носорогом на обложке. Очередь по-моему вполне логичная вещь. Под очередью я понимаю следующее:

Выполняется код, пока он выполняется произошло событие. Обработчик этого события становится в очередь выполнения и, пока не закончится выполняться текущий код, обработчик события не начнет выполняться. Обработчики всех событий становятся в очередь исполнения.
(Добавление)
Цитата:
Асинхронные события обрабатываются после возврата из текущего выполняющегося скрипта.
 
 Top
IllusionMH
Отправлено: 09 Августа, 2013 - 18:18:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Pavelbeginner, и какой же код не завершился до этого?
Клик на кнопке ok в алерте завершает функцию(если там позже не стоит цикл вычисления корней чисел до 10^6). После этого сразу выскакивает алерт в колбэке у запроса.
Какая последовательность действий вас не устраивает?

Опишите какая получается, и какая является желаемой?
"Алерт от аякса(отправляется раньше) до алерта от кнопки?" (Отобразить)

(Отредактировано автором: 09 Августа, 2013 - 18:18:20)

 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Августа, 2013 - 04:40:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Pavelbeginner пишет:
Читал некогда толстенную книгу по js-у, с носорогом на обложке.

Не врите.
Если бы читали её, не задавали таких вопросов.
Скорее всего просто пролистали, и то не до конца.
(Добавление)
Pavelbeginner пишет:
Выполняется код, пока он выполняется произошло событие. Обработчик этого события становится в очередь выполнения и, пока не закончится выполняться текущий код, обработчик события не начнет выполняться. Обработчики всех событий становятся в очередь исполнения.

И ? В чём вопрос -то ?
Причём тут ajax ?
Вы так и не ответили на мой вопрос...
armancho7777777 пишет:
какой смысл несёт в себе словосочетание "асинхронный запрос" ?
 
 Top
caballero
Отправлено: 10 Августа, 2013 - 09:20:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Асинхронный запрос, но сам js однопоточный, основан на очереди выполнения.
Или я не прав?

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

вообще, строго говоря - аякс не асинхронный, он просто выполняется в фоне.
сам запрос к серверу - синхронный независимо от того аякс там или нет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2013 - 09:26:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А мне не понравилось вообще упоминание многопоточности.
В контексте процессора, если физически ядро у него одно - нету там никаких потоков, есть многозадачность, как ресурс, которую он распределяет по всем программам что запущены и делают каике-либо расчеты ПО ОЧЕРЕДИ.

В контексте браузера - да пусть оно происходит как угодно, нет там параллельно выполняемых потоков и все.
Все это визуальный мираж.
 
 Top
caballero
Отправлено: 10 Августа, 2013 - 09:43:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




потоки могут и эмулироватся как это всегда было на однопроцесорных системах.
Но в яваскрипте просто нет средств для работы с потоками.
нельзя создать явно Thread и управлять им. Во всяком случае в браузере - просто есть куча костылей которые делают видимость много поточности.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2013 - 10:57:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




caballero пишет:
потоки могут и эмулироватся как это всегда было на однопроцесорных системах
Верно - форками.
 
 Top
LIME
Отправлено: 10 Августа, 2013 - 11:10:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а еще XmlHttpRequest или как он там у MS называется не прерогатива js
это фича браузера а не языка
 
 Top
nerv
Отправлено: 10 Августа, 2013 - 12:53:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




caballero пишет:
Но в яваскрипте просто нет средств для работы с потоками.

есть ) ну для кого я ссылку выше приводил? Радость

caballero пишет:
просто есть куча костылей

api Закатив глазки

http://forum.php.su/topic.php?forum=40&topic=5031&postid=1376058050#1376058050

(Отредактировано автором: 10 Августа, 2013 - 12:54:40)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB