JavaScript の async/await の仕様をずっと誤解していた - dev.to/jgs

すごい初歩的なことかもしれないのだけれど、年単位ぐらいで誤解したままコードを書いていたので懺悔のためにも書いておく...。

何が違ったかというと、async function の扱いである。async function も

function

と同じだとおもっていて、

Promise

を返さないと呼び出し側で

await

できないと勘違いしていた。そのため、今までは

というような感じで

Promise

を一旦返すようにしていた。しかし、async function は呼び出すと

Promise

を返してくれるのだ。

参照: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function

Node.js v9.5 で確認した。

Promise

が返ってくる...。よくよく調べていくと async function の中で

return

すると

Promise

resolve

し、

throw

すると

Promise

reject

することになるんだそうな。

= >

= >

まじか...。俺の

Promise

とはなんだったんだ.........。とても恥ずかしい.....。

#javascript

original: https://dev.to/jgs/javascript--asyncawait---2l41