ノード8にアップグレードしたばかりで、async/awaitの操作を開始したい。私は解決するのに時間がかかるエラーに出くわし、実際にはもっと優雅な方法があるかどうか疑問に思っていました。この時点で関数全体をリファクタリングしたくなかったのは、それがもたらすすべての二次的なリファクタリングのためでした。
async doSomething(stuff) {
...
return functionThatReturnsPromise()
.then((a) => ...)
.then((b) => ...)
.then((c) => {
const user = await someService.createUser(stuff, c);
user.finishSetup();
});
};
上記のすべてをリファクタリングせずにawait
にすることなく、Promiseチェーンでasync
を使用できる方法はありますか?
コールバックはasync
関数として宣言されていません。 await
関数の内部で直接できるのは、Promise
a async
のみです。
async doSomething(stuff) {
// ...
return functionThatReturnsPromise()
.then((a) => /* ... */)
.then((b) => /* ... */)
.then(async (c) => {
const user = await someService.createUser(stuff, c);
return user;
});
};
さらに、then
関数を利用している場合、needを使用してasync
を使用しないでください。
async doSomething(stuff) {
// ...
const a = await functionThatReturnsPromise();
const b = // ...
const c = // ...
const user = await someService.createUser(stuff, c);
return user;
};