@f1o007

Как дождаться выполнения функции, а после выполнить условие?

Есть 2 функции checkNicknames() и ckechNikname(). Функция
export const checkNicknames = (nicknames) => {
	let result = [];
	nicknames.map( nickname => {
		if (nickname) {
			let st = ckechNikname(nickname);
			st && result.push(st)
		}
	});
	return result;
};
Из этой функции данные передаются в файл .jsx и там заносятся в стейт.

Проблема заключается в функции ckechNikname. По идее эта функция отдает данные выше указанной функции. В ней выполняется следующее
const ckechNikname = (nickname) => {
	let isParam = true;
	let params = {};

	getAccountId(nickname).then( async (data) => {
		let account_id = data.data.data[0].account_id;
		await getStatistic1(account_id).then(data => {
			//обработка полученных данных по первому запросу
		});
		await getStatistic2(account_id).then(data => {
			//обработка полученных данных по второму запросу 
		});
	});
	if (isParam) { return params} else { return false; }
};
getAccountId, getStatistic1, getStatistic2 - запросы к серверу. Все данные при выводе в консоль выводятся корректно, но при передаче в условии они, как я понял, не успевают к этому моменту занестись в переменные на подобии isParam и params. Как сделать так чтобы все данные были переданы?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
RAX7
@RAX7
у тебя getAccountId(nickname).then( async (data) =>{....}) асинхронно выполняется поэтому ckechNikname завершится раньше, чем в переменные isParam и params что-то попадет.
https://codepen.io/anon/pen/NEEXwW?editors=0010
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы