Я хотел спросить, это перебор? я пишу избыточный код? Это анти-паттерн?
Да, это излишне, и это как минимум два, может быть, три анти-паттерна.
Вам не нужно объявлять функцию async
, от которой вы только что возвращаете созданное вручную обещание. И вам также не нужно объявлять обратный вызов исполнителя обещания как async
. И, если вы используете await
внутри исполнителя, вам не нужно оборачивать его созданным вручную обещанием.
Если вы действительно планируете использовать await
внутри исполнителя обещания , тогда у вас уже должны быть функции, которые возвращают обещания, с которыми вы хотите использовать await
. Если это так, то нет смысла заключать их в обещание, созданное вручную. Это обещание против паттерна.
Вам также не нужно пытаться / ловить, а затем просто отклонить с той же ошибкой. Вы можете просто позволить ошибке распространяться самостоятельно.
Итак, давайте предположим, что у вас есть две функции, возвращающие обещание, которые вы хотите запускать последовательно, используя await
. Затем все, что вам нужно, это:
async function someFunction(parameters) {
let v1 = await func1(...);
// do something with v1
let v2 = await func2(someValFromV1);
// do something with v2
return someValFromV2;
}
someFunction("HEllo world").then(result => {
console.log(result);
}).catch(err => {
console.log(err);
});
Или вы можете позвонить с помощью await
вместо .then()
:
async function anotherFunction() {
let result = await someFunction(...);
// do something with result
}