私は使用していますECMAスクリプト6また、私のアプリケーション(モバイルと Web の両方)には、すでに ECMAScript 7 の機能が組み込まれています(Babel のおかげです)。
最初のステップは、もちろん ECMAScript 6 レベルでした。私は、非同期パターン、Promise (非常に有望)、ジェネレーター (なぜ * 記号なのかはわかりません) など、多くのことを学びました。これらのうち、Promise が私の目的に非常によく合っていました。そして、私は自分のアプリケーションで Promise をかなり頻繁に使用しています。
以下は、基本的な約束をどのように実装したかの例/疑似コードです。
var myPromise = new Promise(
function (resolve,reject) {
var x = MyDataStore(myObj);
resolve(x);
});
myPromise.then(
function (x) {
init(x);
});
時が経つにつれ、ECMAScript 7 の機能に出会いました。その 1 つがASYNC
と のAWAIT
キーワード/関数です。これらを組み合わせると、すばらしい効果が得られます。私は、いくつかの promise を に置き換え始めましたasync & await
。これらは、プログラミング スタイルに大きな価値を追加するようです。
繰り返しになりますが、私の async、await 関数の擬似コードは次のようになります。
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
構文エラー(もしあれば)を除けば、どちらもまったく同じことを行うと私は感じています。ほとんどの promise を async、awaits に置き換えることができました。
Promise が同様の機能を果たすのに、なぜ async、await が必要なのでしょうか?
async、await はより大きな問題を解決しますか? それとも、コールバック地獄に対する単なる別の解決策だったのでしょうか?
先ほど言ったように、promise と async,await を使用して同じ問題を解決することができます。async await によって解決される具体的な問題はありますか?
その他の注意事項:
私は、React プロジェクトと Node.js モジュールで async、await、promise を多用してきました。特に React は早くから ECMAScript 6 と ECMAScript 7 の機能を多く採用してきました。
ベストアンサー1
Promises が同様の機能を果たすのに、なぜ async,await が必要なのでしょうか? async,await はより大きな問題を解決しますか?
async/await
非同期コードに同期的な感覚を与えるだけです。これは非常にエレガントな構文糖です。
単純なクエリやデータ操作であれば、Promiseはシンプルですが、複雑なデータ操作などが必要なシナリオに遭遇した場合は、コードが単純に見た目同期的であるかのように(言い換えれば、構文自体はasync/await
回避可能な「偶発的な複雑さ」の一種です)。
興味があれば、次のようなライブラリを使うことができます。co
(ジェネレーターと一緒に) 同じような感覚を与えるために。このようなものは、async/await
最終的に (ネイティブに) 解決する問題を解決するために開発されました。