【发布时间】:2018-01-05 20:10:13
【问题描述】:
我刚刚升级到节点 8,想开始使用 async/await。我遇到了一个错误,我花了一段时间才解决,实际上我只是想知道是否有更优雅的方式。我不想在此时重构整个函数,因为它会导致所有二次重构。
async doSomething(stuff) {
...
return functionThatReturnsPromise()
.then((a) => ...)
.then((b) => ...)
.then((c) => {
const user = await someService.createUser(stuff, c);
user.finishSetup();
});
};
有没有办法能够在承诺链中使用await,而不必将上面的所有内容都重构为async?
【问题讨论】:
-
不应该是
.then(async (c) => {才有效吗? -
这可能是我之前在搞砸这个时错过的......我已经将整个链包裹在异步 IEFE 中。谢谢!
-
在这个简单的示例中,我不需要等待,但在我拥有的真实代码中,需要对用户执行一些操作。
-
是的,
await只能在async的函数内使用 - 异步函数内的函数不是异步的,除非它本身被特别标记为这样:p -
我不明白的是,当整个函数是
async函数时,为什么函数仍在使用 Promise。
标签: javascript node.js async-await