return new Promise(async (resolve, reject) => {
является антипаттерном. Добавление async
перед функцией уже вернет Обещание. new Promise
должен использоваться только для преобразования ни одной базовой асинхронной функции Promise c в функцию, в которой используется Promise.
Не является ли resol () свободно равным return?
Равенство только в том смысле, что оно устанавливает «возвращаемое» значение обещания, но не нарушает поток выполнения. Так что да, вам нужно будет поставить return
после разрешения, если вы хотите предотвратить выполнение следующего кода.
Но, как я уже сказал, показанная конструкция в любом случае является антишаблоном и testAsync
должно выглядеть так:
async function testAsync(testParam) {
await wait(2000); // do some async work
if (testParam === 1) {
console.log("test param is equal to 1");
return "first IF";
}
if (testParam < 10) {
console.log("test param is smaller than 10");
return "second IF";
}
}
И wait
, скорее всего, будет написано так:
function wait(time) {
return new Promise((resolve, reject) => { setTimeout(resolve, time) });
}