在promise链中使用await

时间:2017-07-30 02:29:25

标签: javascript node.js async-await

我刚刚升级到节点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

1 个答案:

答案 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