async
基本的に、関数内で使用する場合は、関数の前にキーワードを付ける必要がありますawait
。ただし、一部の関数が Promise を返すだけで何も待機しない場合は、関数を としてマークする必要がありますかasync
?
どちらも正しいように思えますか?
// with async (returns Promise)
async getActiveQueue() {
return redisClient.zrangeAsync(activeQueue, 0, -1);
}
// difference? Both could be awaited isn't it?
getActiveQueue() {
return redisClient.zrangeAsync(activeQueue, 0, -1);
}
ベストアンサー1
ある関数が Promise を返すだけで何も待機しない場合は、その関数を async としてマークする必要がありますか?
そうすべきではないと思います。/ の目的は、async
Promiseawait
を作成 (および解決) することです。既に返す Promise がある場合、async
/ はawait
その関数に対して何のメリットも与えません。
どちらも待てますよね?
await
は関数ではなく、Promise で動作します。したがって、await
Promise が手動で作成されたか、または によってバックグラウンドで作成されたかに関係なく、どの Promise でも正常に動作しますasync
。