JavaScript の非同期メカニズムにより、コールバック ピラミッドという一般的な問題が発生します。
loadImg('a.jpg', function() { loadImg('b.jpg', function() { loadImg('c.jpg', function() { console.log('all done!'); }); }); });
Promise 文字通り、約束。 A が B を呼び出し、B が A に約束を返した場合、A は次のように計画を書くことができます: B が結果を私に返すと、A は S1 計画を実行します。逆に、B が A に望む結果を与えなかった場合何らかの理由で、その後、A は緊急計画 S2 を実行します。この場合、すべての潜在的なリスクは A
var resB = B(); var runA = function(){ resB.then(execS1,execS2); };
の制御内にあります。A が何かを完了したい場合、B からの応答に依存しない可能性があります。その場合、上記はコードは変更されます Cheng
var resB = B(); var resC = C(); ... var runA = function() { reqB .then(resC, execS2) .then(resD, execS3) .then(resE, execS4) ... .then(execS1); }; runA();
ここでは、質問者が予期しない応答をするたびに、異なる処理メカニズムが使用されます。ただし、Promise 仕様ではこれが要求されていない、または処理が実行されないことさえあります。 then) の 2 番目のパラメータを渡さないか、一律に処理してください。
A Promise は 3 つの状態で存在する可能性があります。waiting( pending)、Completed(fulfilled)、Rejected(rejected)
Promise のステータスは「待機中」からのみ変更できます。 " "「完了」または「拒否」に進みます。逆変換は許可されていません
Promise は then メソッド (then は Promise の核心です)## を実装する必要があります#、その後 Promise を返さなければなりません。その後、同じ Promise を複数回呼び出すことができ、コールバックの実行順序は定義された順序と同じになります。
など、Promise の配列の受け渡しをサポートし、すべての Promise が完了したときに実行される、より多くの操作インターフェイスが提供されています。よりフレンドリーで強力な例外キャプチャを処理します。日常的な非同期プログラミングにはこれで十分です。
オブジェクトです。
最後に、Promise はとてもエレガントです!ただし、Promise はコールバックの深いネストの問題を解決するだけです。ジェネレーターは JavaScript 非同期プログラミングを本当に簡素化するものです。Node.js 側では、ジェネレーターを検討することをお勧めします。
JS チュートリアル 」
以上がES6 の Promise について学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。