![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| UhaMurad |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 22.9.2004 Где: Махачкала Репутация: нет Всего: нет |
Здравствуйте!
Меня интересует один вопрос... начну с примера: допустим в скрипте вызывается один за другим метод send объекта XMLHTTP... допустим ответ от сервера приходит почти одновременно... вопрос: может ли функции, передаваемые в методе open объекта XMLHTTP выполнятся одновременно (т. е. может ли одна функция начаться пока не завершилась первая)... как реализуется этакая многозадачность и зависит ли это от браузера? Я почему спрашиваю: ведь код в этих функциях может манипулировать общими глобальными объектами и тогда встает вопрос наподобие "разделения ресурсов"... Спасибо! |
|||
|
||||
| cruelangel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
javascript - однопоточный язык
Добавлено через 1 минуту и 37 секунд поэтому выполнение функции в нём - атомарно. |
|||
|
||||
| Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 2 Всего: 5 |
UhaMurad, при обращении двумя функциями одновременно к одному обьекту xmlhttp произойдёт ошибка. Создавай новые обьекты xmlhttp и используй каждый экземпляр со своей функцией.
На правах ИМХО. Добавлено через 1 минуту и 12 секунд cruelangel, под обращением "одновременно" я понял - обращение одной функции и пока не вернулся ответ от сервера обращение второй. Это вызовет ошибку. -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
| UhaMurad |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 22.9.2004 Где: Махачкала Репутация: нет Всего: нет |
Astraller, извиняюсь, в принципе я так и делал (на каждый вызов новый XMLHTTP), просто неправильно описал
cruelangel, благодарю, это я и хотел услышать |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
javascript — однопоточный. Но именно с XMLHttpRequest в IE могут происходить различные веселые глюки, по крайней мере, если в обработчике будет alert().
|
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Все не так.
Однопоточный - это да, но при ajax ситуация меняется. Если используется АСИНХРОННЫЙ аякс (а вы именно его использует, не так ли?) При асинхронном запросе запускаются потоки, прям как в мультитредовой программе. и функции могут выполняться dполне одновременно. Например, если это две ф-и, которые пищут буковки в одну глобальную переменную, то в итоге может получиться замеса. Например, одна callback пытается записать в переменную hello а вторая - world. Если они совсем уж одновременно запустятся - то строка может вдруг содержать hweolrllod Не верите? Проверьте. cruelangel, ты не прав. Атомарно - это пооператорно. Т.е. оператор из одной функции, потом из другой, потом следующий - снова из первой и т.д. Опять же - это при асинхронных запросах. Синхронные идут в одном потоке конечно. --------------------
|
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 13 Всего: 36 |
szz, пример кода можно?
Потоки, в которых грузятся данные и потоки выполняемого кода, это не одно и тоже. |
|||
|
||||
| UhaMurad |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 22.9.2004 Где: Махачкала Репутация: нет Всего: нет |
У ты.... как все сложно... значит беспокоится есть о чем
Это что же, придется писать систему управления разделяемыми ресурсами (глобальными объектами) самому |
|||
|
||||
| Foror |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 14.2.2004 Репутация: нет Всего: 2 |
Верю. Можно в JavaScript контролировать потоки? Ставить блокировки на глобальные переменные? --------------------
Разработка веб-сайтов и создание интернет магазина |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |