| 
	| 
	
	| 
		
	| 
			
			 
			
				23.07.2017, 09:40
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.01.2012 
						Сообщений: 499
					 
		
 |  |  
	| 
				$.getScript callback - разночтения в документации
			 . 
В документации jQuery.getScript( url [, success ] )  написано следующее:
 
	
 
	| Код: |  
	| The callback is fired once the script has been loaded but not necessarily executed. |  
	
 
Т.е. вроде как callback может сработать ДО выполнения загруженного скрипта. Однако, там же написано и следующее:
 
	
 
	| Код: |  
	| This is a shorthand Ajax function, which is equivalent to:
$.ajax({
  url: url,
  dataType: "script",
  success: success
});
 |  
	
 
Читаем документацию по функции jQuery.ajax( [settings ] )  и видим:
 
	
 
	| Код: |  
	| If script is specified, $.ajax() will execute the JavaScript that is received
from the server before passing it on to the success handler as a string. |  
	
 
Т.е. callback "success" должен железно сработать уже ПОСЛЕ выполнения загруженного скрипта...
 
Использую jquery-1.7.2 и вроде как на практике срабатывает ПОСЛЕ выполнения, но не уверен что могу на это рассчитывать всегда и во всех браузерах. В сети встречаются жалобы, что коллбэк срабатывает раньше, но возможно что поведение изменилось с какой-то версии jQuery...
 
Вопрос к прожжённым знатокам jQuery: так где же правда?
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 12:35
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Белый шум |  
	| Т.е. вроде как callback может сработать ДО выполнения загруженного скрипта. |  
	
 Там такого не написано. Написанное гласит, что callback запускается после загрузки сценария  (а иначе и не может быть), но не обязательно выполняется .
 
То же самое для любого Ajax метода, кроме конечно методов определенных как иные события. |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 12:52
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.01.2012 
						Сообщений: 499
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Написанное гласит, что callback запускается после загрузки сценария (а иначе и не может быть), но не обязательно выполняется. |  
	
 Я так и написал, просто акцентировал внимание на том моменте, который меня интересует в рамках данного вопроса.
 
	
 
	| Сообщение от laimas   |  
	| То же самое для любого Ajax метода, кроме конечно методов определенных как иные события. |  
	
 Тогда переведите мне фразу:
 
	
 
	| Код: |  
	| If script is specified, $.ajax() will execute the JavaScript that is received
from the server before passing it on to the success handler as a string. |  
	
 
-- может я что-то не так понял? |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 12:56
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Белый шум |  
	| Я так и написал |  
	
 Да ну, то есть Т.е. вроде как callback может сработать ДО выполнения загруженного скрипта , это о том же самом говорит?    
Переводить, так нужно знать контекст, а не выдранное, что вы правильно поняли. Плохо с инглишем, ну так есть и на русском , какие проблемы. |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 13:51
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.01.2012 
						Сообщений: 499
					 
		
 |  |  
	| На русском тоже по разному переводят: https://jquery-docs.ru/jQuery.getScript/ 
	
 
	| Цитата: |  
	| Функция обратного вызова исполняется после того как он будет загружен, но необязательно до выполнения. |  
	
 И вообще ваш вариант перевода мне кажется странным, если not necessarily executed  относить к callback is fired , а не к script has been loaded , то какая-то путаница получается: как он может быть fired  но не executed ??
 
И, как минимум, раньше он вёл себя именно так как я перевожу:
https://stackoverflow.com/questions/...d-and-executed |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 14:04
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Белый шум |  
	| И вообще ваш вариант перевода мне кажется странным, если not necessarily executed относить к callback is fired |  
	
 Метод jQuery.getScript(), получает с сервера js-сценарий и выполняет его, значит ваше возражение полагает, что получаемый js вполне может выполнится будучи еще не загруженным?
 
Я не знаю относительно чего вы переводите, но то что запрашивается и должно быть исполнено/помещено на страницу совершится только тогда, когда работа ajax завершена. Дискутировать по данному поводу просто глупо. |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 14:13
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.01.2012 
						Сообщений: 499
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| но то что запрашивается и должно быть исполнено/помещено на страницу совершится только тогда, когда работа ajax завершена. |  
	
 Именно поэтому ваш перевод:
 
	
 
	| Сообщение от laimas   |  
	| callback запускается после загрузки сценария, но не обязательно выполняется. |  
	
 не имеет смысла |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 14:44
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| callback выполняется по окончанию асинхронного запроса  - это подвергается сомнению? 
 Окончанию асинхронного запроса есть загрузка и выполнения скрипта - это подвергается сомнению?
 
 callback не обязательно может быть выполнен по тем или иным причинам - это подвергается сомнению?
 |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 15:09
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 19.01.2012 
						Сообщений: 499
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| callback выполняется по окончанию асинхронного запроса  - это подвергается сомнению? |  
	
 нет
 
	
 
	| Сообщение от laimas   |  
	| Окончанию асинхронного запроса есть загрузка и выполнения скрипта - это подвергается сомнению? |  
	
 да. Загрузка и выполнение - разные этапы, между которыми можно запустить коллбэк. Выше я приводил ссылку, где обсуждается именно такое поведение и ищется обходной путь. 
Подозреваю, что поведение изменилось в районе jquery 1.5, когда были введены промисы, но нужны доказательства.
 
	
 
	| Сообщение от laimas   |  
	| callback не обязательно может быть выполнен по тем или иным причинам - это подвергается сомнению? |  
	
 Условия запуска колбека описаны в первой части обсуждаемого предложения; "but" и всё что после - не имеет смысла при вашем переводе, а момент запуска коллбека остаётся не раскрыт (т.к. загрузка и выполнение - разные этапы). |  |  
	| 
		
	| 
			
			 
			
				23.07.2017, 15:37
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Белый шум |  
	| да. Загрузка и выполнение - разные этапы, между которыми можно запустить коллбэк. |  
	
 Это вы уже говорите (или подразумеваете, ...) не о callback, который запускается только по окончании запроса в ($.ajax, это метод success), в процессе загрузка и до нее этого исполнить нельзя.
 
Ежику понятно, что загрузка, это не исполнение, ибо запустить таковое не возможно, но это относится к загружаемому, но не к callback, вы же смешали и котлеты, и мух в одну кучу.
 
В методе error определяются ошибки, в $.ajax success метод также возвращает статус выполнения вторым параметром.
 
На этих статусах, на событиях и параметрах объекта XMLHttpRequest  и построен $.ajax JQ. Если говорить об отличиях, то собственно это собственные некоторые методы, но подчинены работа XMLHttpRequest.
 
Если вы сможете выполнить success (а именно об этом речь, а не к примеру beforeSend) до окончания асинхронного запроса, тогда ваше т.к. загрузка и выполнение - разные этапы  будет иметь смысл и я вам лично установлю памятник.
			
			
	
			
			
			
			
			
				  |  |  |  |