Как дождаться окончания двух функций asyn c? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть 2 функции обещания в операторе if-else.

if(file_type == "pdf"){
  // Some Promise
  .then(data =>
    result = data;
  )
}
else{
  // Other Promise
  .then(data => 
    result = data
  )
}
// Do something with the data

Я хочу, чтобы последняя синхронная часть не выполнялась перед выполнением обещания, но я не хочу повторяться синхронный код в обоих блоках then обещаний. Есть ли способ сделать это?

То, что я пробовал, было

async() => { if(file_type == "pdf"){
  await // Some Promise
  .then(data =>
    result = data;
  )
}
else{
  await // Other Promise
  .then(data => 
    result = data
  )
}
}
// Do something with the result

Но подход не сработал. Он сразу пропустил асин c часть.

Извините, если это очень тупой вопрос. Я ищу его на YouTube и StackOverflow, но все напрасно. Спасибо за любую помощь .

1 Ответ

1 голос
/ 10 апреля 2020

Используйте условный оператор для ссылки на Some Promise или Other Promise, затем вызовите .then для этого обещания:

const prom = file_type == 'pdf' ? somePromise : otherPromise;
prom.then((data) => {
  // Do something with the data
});

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

Вы также можете поместить ее в именованную функцию:

const processData = (data) => {
  // Do something with the data
};
const prom = file_type == 'pdf' ? somePromise : otherPromise;
prom.then(processData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...