pLavrenov
@pLavrenov
Разработка сайтов

Как вернуть результат функции js?

Как вернуть результат функции js?

function getFunction() {
	$.when(
		$.ajax('адрес'),
		$.ajax('адрес')
	).then(function(result1, result2){
		//как вернуть два результата????
	});
}
console.log(getFunction());
  • Вопрос задан
  • 3644 просмотра
Решения вопроса 1
@tekdel
function getFunction(callback) {
	$.when(
		$.ajax('адрес'),
		$.ajax('адрес')
	).then(function(result1, result2){
                 callback(result1,result2);
		//как вернуть два результата????
	});
}
getFunction(function(result1, result2) {  console.log( result1,result2)})


function getFunction() {
	return $.when(
		$.ajax('адрес'),
		$.ajax('адрес')
	)
}
getFunction().then(function(result1, result2) {  console.log( result1,result2)})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Коллбек, переданный в then, вызывается асинхронно -- когда-то потом, в неопределенном будущем, неизвестно когда, но точно тогда, когда getFunction уже закончит свое выполнение.

Напишите в консоли:
function getFunction () {
    console.log('sync1');
    setTimeout(function () {
        console.log('async');
    }, 1000);
    console.log('sync2');
}

Какое бы число вы не поставили вместо 1000, хоть 0, надпись async появится позже, чем sync2. А если поставить брейкпойнт, то хорошо видно, что на момент выполнения console.log('async'); функции getFunction даже нет в стеке вызовов.

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

Возвращайте promise:
function getFunction() {
	return $.when(
		$.ajax('адрес'),
		$.ajax('адрес')
	)
}

и работайте с ним (с помощью .then и т.д.)
Ответ написан
Комментировать
@kichik91
Так?
var result;

result = {
    'result1': result1,
    'result2': result2
};

return result;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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