zasqer
@zasqer

Как вернуть ответ от $.ajax() как результат выполнения внешней функции-обёртки?

Наверное лёгкий вопрос для тех кто знает javascript:

Задача стоит так: послать запрос к базе, обработать его и вернуть как результат outer_function().

Проблема в том, что строка "return response" возвращает значение inner_function() а не outer_function().
А если вынести return из inner_function, то он срабатывает раньше, чем $.ajax().

На данный момент код выглядит так:

outer_function(data){
	$.ajax(
		// send data -> recieve response
	)
		.done(inner_function(response){
			// do something with response
			return response
		});
}


Подскажите - как сделать правильно или киньте ссылкой. Спасибо.
  • Вопрос задан
  • 3704 просмотра
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Используйте promis-ы. Ваша outerFunction вернет обещание, извне вы подпишитесь на done.
Ответ написан
Комментировать
fornit1917
@fornit1917
Запрос асинхронный, как результат внешней функции вернуть не получится. Можно аяксу опцию async:false передать, тогда запрос будет синхронным, но это не всегда хорошее решение.

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

Войдите, чтобы написать ответ

Похожие вопросы