Показать сообщение отдельно
  #1 (permalink)  
Старый 06.09.2017, 17:12
Аватар для borus
Кандидат Javascript-наук
Отправить личное сообщение для borus Посмотреть профиль Найти все сообщения от borus
 
Регистрация: 07.12.2012
Сообщений: 147

Почему в цикле дело не доходит до обработки результата, а вне его наоборот?
Здравствуйте!

Я попробовал запускать такой код, который в цикле добывает данные из компонента Joomla:
while (go == 1){
		jQuery.getJSON('index.php?option=com_vm3delpics&task=fsdelete.read&format=json'
		, {
			data: {
				... //отправляемые данные
			}
		})
		.done(function(r) {
			...
			go = r.data.go;//здесь меняется условие продолжение цикла на основании данных полученных от компонента
			...	
		})
		.fail(function() {
			...
		})
		.always(function() {
                        ...
		});
	}

но в отладке увидел, что сразу после вызова jQuery.getJSON() происходит переход на следующую итерацию цикла while, дело до анализа результатов(до тела функции done) не доходит.
Хотя если я уберу обёртку цикла(строки "while (go == 1){" и "}") и вызову jQuery.getJSON() единожды, то отладчик сначала перескочит через функции done(), fail(),always(), что-то повычисляет в jquery.min.js и только потом вспоминает, что есть эти функции и выполняет их код.
Возникли вопросы:
1. Как можно объяснить, почему без цикла отладчик добирается в тело done(), а в цикле while нет?
2. И как можно сделать цикличный код рабочим?

Последний раз редактировалось borus, 06.09.2017 в 17:17.
Ответить с цитированием