我刚刚升级到节点8,并希望开始使用async / await。我遇到了一个错误,我花了一段时间才解决这个错误,实际上我只是想知道是否有更优雅的方式。我不想在这个时间点重构整个函数,因为它会导致所有的二级重构。
async doSomething(stuff) {
...
return functionThatReturnsPromise()
.then((a) => ...)
.then((b) => ...)
.then((c) => {
const user = await someService.createUser(stuff, c);
user.finishSetup();
});
};
有没有办法在promise链中使用await
,而不必将上面的所有内容都重构为async
?
答案 0 :(得分:12)
回调未声明为async
函数。您只能在await
函数内直接Promise
async
。
async doSomething(stuff) {
// ...
return functionThatReturnsPromise()
.then((a) => /* ... */)
.then((b) => /* ... */)
.then(async (c) => {
const user = await someService.createUser(stuff, c);
return user;
});
};
此外,如果您正在利用then
功能,则
async