【发布时间】:2018-11-13 14:14:35
【问题描述】:
我想使用 await 语法编写一段代码,立即执行它,并创建一个等待执行完成的 Promise。我想出了以下方法来做到这一点。
let makePromise = async () => {
return foo && await bar();
}
let promise = makePromise();
但是,我发现这很难阅读和理解。创建一个函数然后立即调用它似乎违反直觉,并且违背了其他编程语言的良好实践。有没有更惯用的方式来编写这段代码?
特别是,此代码用于以下上下文。
let promises = items.map((item) => {
let makePromise = async () => {
return foo(item) && await bar(item);
}
return makePromise();
});
【问题讨论】:
-
这是唯一的方法。为什么不将临时功能提升到模块级别,并根据其职责和业务价值为其命名呢?一般来说,将您的代码拆分为多个具有深思熟虑的名称的函数被认为是一种很好的做法。
-
异步函数实际上返回了一个承诺。
const x = async () => {console.log(123)}; x.then(() => console.log(456)) -
你应该像这样在
makePromise()尝试awaiting:let makePromise = async () => { return foo && bar(); } let promise = await makePromise(); -
@TamasHegedus 通常这可能是正确的,但在我的情况下并非如此。我将在问题中添加一些上下文,以明确为什么您的解决方案不适用于我的情况。这也可能更容易回答这个问题。
标签: node.js promise async-await