Async / await решает проблему, но важно понять, почему она решает проблему.
Обещания - это механизм хранения продолжений. Функции, которые вы передаете then
и catch
, хранятся в обещании и выполняются при его разрешении.
Чтобы решить эту проблему без async
/ await
, вам нужно просто вернуть обещание и используйте then
для выполнения любого кода, который должен выполняться, когда Обещание не отклоняет:
function someFunction() {
// Code
return somePromise()
.then(result => {
// More Code
})
.catch(err => {
console.log(err);
});
}
Это, по сути, то, к чему async
/ await
удаляет сахар. Async / await - это синтакт c сахар вокруг конечного автомата, который связывает эти продолжения для вас.