ECMAScript 6とECMAScript 7の機能を、モバイルとWebの両方のアプリケーションで(Babelのおかげで)すでに使用しています。
最初のステップは明らかにECMAScript 6レベルへの移行でした。私は多くの非同期パターン、約束(本当に有望です)、ジェネレーター(なぜ*記号なのかわからない)などを学びました。これらのうち、約束は私の目的にかなりよく適合しました。そして、私は自分のアプリケーションでそれらをかなり使用しています。
これは、私が基本的な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
キーワードと関数です。これらを組み合わせると、すばらしい不思議が起こります。私は私の約束のいくつかをに置き換え始めましたasync & await
。彼らはプログラミングスタイルに大きな価値を加えているようです。
繰り返しますが、これは私の非同期のawait関数がどのように見えるかの疑似コードです-
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
構文エラーを(もしあれば)脇に置いておくと、どちらもまったく同じことを行うと私は感じています。私はほとんどの約束をasync、awaitsに置き換えることができました。
Promiseが同様の仕事をするときになぜasync、awaitが必要なのですか?
asyncは、より大きな問題を解決しますか?それとも、コールバック地獄への別の解決策でしたか?
前に言ったように、私はpromiseとasyncを使用して、同じ問題を解決するのを待つことができます。非同期が解決するのを待つ特定のものはありますか?
その他の注意事項:
私はReactプロジェクトとNode.jsモジュールでasync、awaits、promiseを幅広く使用しています。Reactは特に早い段階で、ECMAScript 6およびECMAScript 7の多くの機能を採用しています。