Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.07.2017, 19:55
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Я задал конкретный вопрос, а вы развели какую-то демагогию на пустом месте. Запрос к серверу, асинхронный он или нет, завершается одним и тем же - загрузкой данных (ну или ошибкой, но этот вариант мы сейчас не рассматриваем). Всё. Исполнение скрипта (и вызов callback) - это уже отдельная магия jQuery и реализована она может быть по-разному в зависимости от особенностей браузера.


В общем, нашёл объяснение на странице https://stackoverflow.com/questions/...d-vs-execution в последнем посте (за авторством Bizniztime), в котором есть ссылка на http://perfectionkills.com/global-ev...e-the-options/

--- похоже, что до jquery-2.1.0 для выполнения скриптов использовался window.eval() с откатом на window.execScript() для IE и некоторых других очень старых браузеров. И вот эта execScript() не возвращает результата выполнения, поэтому коллбек будет запущен в любом случае.
Так что документация не врёт (хотя могли бы осветить этот момент подробней) и лучше не закладывать порядок выполнения колбека в алгоритм.
Ответить с цитированием
  #12 (permalink)  
Старый 23.07.2017, 20:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Белый шум
поэтому коллбек будет запущен в любом случае.
Охренеть, уж если так, то в любом и когда, это большая разница, собственно о когда в исходнике и шла речь. А уже относительно чего вы там для себя переводите, и как понимаете, как угодно можете трактовать.

Сообщение от Белый шум
Я задал конкретный вопрос, а вы развели какую-то демагогию на пустом месте.
Вы хрень несли, мягко выражаясь, смешав все в кучу, а виноваты ....
Ответить с цитированием
  #13 (permalink)  
Старый 23.07.2017, 20:42
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Ваше буквоедство не несёт никакой полезной нагрузки.
Цитата:
Т.е. вроде как callback может сработать ДО выполнения загруженного скрипта.
Если вам так будет понятней, то вставлю это слово:
Цитата:
Т.е. вроде как callback может сработать ДО ЗАВЕРШЕНИЯ выполнения загруженного скрипта.
Кроме того, в жалобах на поведение этой функции я встречал упоминания, что иногда колбэк отрабатывает раньше, хотя в основном работает как положено - т.е. слово "когда" вполне уместно. Тем более, что мы не знаем как реализована функция window.execScript() в ИЕ, в каких-то версиях она вполне может возвращать управление и до полного завершения внедрённого скрипта.
Ответить с цитированием
  #14 (permalink)  
Старый 23.07.2017, 21:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Оригинально, ни чего не скажешь, в оригинале говорится о том, что callback выполняется после загрузки сценария (вообще правильнее было бы написать после завершения запроса), вопрос задается "о чем там написано?", при этом трактовать его относительно чего-то, доказывая свою правоту еще и утверждать, что вы все дураки.

Вам так кажется, что там говорится "вроде как callback может сработать ДО выполнения"? Да на здоровье.
Ответить с цитированием
  #15 (permalink)  
Старый 24.07.2017, 08:50
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сегодня перечитал на свежую голову - возможно вы правы касательно перевода. Но вопрос всё-таки был не о переводе, а о поведении. В любом случае ответ уже найден, так что предлагаю закрыть тему.
Ответить с цитированием
  #16 (permalink)  
Старый 24.07.2017, 08:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

PS. Кстати, может jQuery в сторону и используя XMLHttpRequest написать свое, определив конечно же и методы, и каков будет результат. В том смысле, что опираясь на логику, увидим ли иное поведение?

Последний раз редактировалось laimas, 24.07.2017 в 08:59.
Ответить с цитированием
  #17 (permalink)  
Старый 24.07.2017, 14:44
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Rise: спасибо, именно такой ответ и хотелось получить.

А execScript тоже синхронная функция? Во всех версиях? Если она всегда возвращает null - https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx - то вполне может быть асинхронной, имхо.

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

Последний раз редактировалось Белый шум, 24.07.2017 в 14:47.
Ответить с цитированием
  #18 (permalink)  
Старый 24.07.2017, 16:23
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Rise
Да, тест:
Ясно, спасибо.

Сообщение от Rise
Выполнение остановится.
Не, это понятно А колбек success на старых ИЕ (перед 11-ой версией) запустится или нет?
Ответить с цитированием
  #19 (permalink)  
Старый 24.07.2017, 16:42
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Понял, спс.
Ответить с цитированием
  #20 (permalink)  
Старый 25.07.2017, 13:40
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Rise
видимо под "from the server" имеется ввиду "same-domain server"
Если так додумывать написанное, то можно объяснить всё на свете

Документация явно недостаточна в этом месте и должна была описать все случаи, раз уж там такие неожиданные различия в поведении.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Работы с callback функциями jenek_34 Общие вопросы Javascript 13 25.03.2015 12:03
Работа с textarea Rompo Events/DOM/Window 14 16.12.2013 17:41
Callback работает не так как я от него жду singaporian Общие вопросы Javascript 3 14.08.2013 00:42
Перевод API документации по ExtJS maxyc ExtJS 4 08.12.2009 16:18