r45her
@r45her
HTML-верстальщик / Frontend разработчик

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

Есть функция А. Она при вызове передаёт данные. И есть функция Б. В ней происходит асинхронный запрос на сервер. Нужно, чтобы функция А отправила данные только после того, как вернётся результат из Б. Как это сделать?

Вот псевдокод:

function a(data) {
    send(data);
}

function b() {
    async request;
}

a("some data");


UPD. При этом А должна запускаться обязательно НЕ из Б
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 3
@StockholmSyndrome
function a(data) {
  b().then(() => {
    send(data);
  });
}

или
async function a(data) {
  await b(); 
  send(data);
}

при этом функция b должна возвращать Promise
Ответ написан
Комментировать
@KindOf
async function a(data) {
  await b()
  send(data)
}

function b() {
  return asyncRequest()
}
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
let lock;
function a(data) {
    Promise.resolve(lock).then(() => send(data));
}

function b() {
    lock = Promise.all([
        lock,
        asyncRequestPromise().catch(err => {
            // обработка ошибки, иначе все упадет
        })
    ]).then(() => lock = void 0); // чистим память
}

a("some data");
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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