🤝
JavaScriptのasync/awaitはPromiseの糖衣構文か
Q. JavaScriptのasync/awaitはPromiseの糖衣構文か?
A. 糖衣構文ではありません。
Q. なぜ?
A. async function
構文で作られた関数オブジェクトに対してFunction.prototype.toString
メソッドを呼び出すと、async function
で始まる文字列が得られます。これはPromise
だけでは不可能で、async function
構文を用いないと不可能です。
async function foo() {}
// "async function foo() {}"
console.log(Function.prototype.toString.call(foo));
※ここでは糖衣構文は「その構文を使ったプログラムをその構文を使わない同じ意味のプログラムに常に書き換えられるような構文」と定義しています。
Q. だから何?
A. さあ……
Discussion