promiseがあって、なぜasync、awaitが必要ですか?


非同期関数は、「async/await」とも呼ばれ、ES 6 PromiseモードのECMAScript関数での応用である.async/awaitはES 8仕様で追加されました.この特性は挙動と文法からJavaScriptを強化し、同期方式で書かれたコードを非同期的に実行できるようにする.
このPromiseは、タイムアウト後の値として処理される.
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3));
このPromiseは、1000ミリ秒後に数値3として処理される.プログラム内の他のコードがこの値 でアクセスする場合、解決策を書く必要があります.
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3));
p.then((x) => console.log(x)); // 3
これは実はとても不便です.他のコードは全部Promise処理プログラムに入れなければならないからです.しかし、処理プログラムを関数として定義することができます.
function handler(x) { console.log(x); }
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3));
p.then(handler); // 3
この改善は実はそれほど大きくないです.これは、このPromiseによって生成された値にアクセスする必要がある任意のコードが、この値を処理プログラムとして受信する必要があるからである.つまり、コードはそのまま処理プログラムに入れます.
ES 8はこのためにasync/awaitキーワードを提供しました.