新しい標準は、ネイティブの約束を追加します。
ここでは、チェーンの使用についてのみ説明し、詳細について考えます。
1。then()とcatch()のレビュー
コールバック関数は、TON()およびCACT()のパラメーターに配置して、約束の最終結果を受信できます。
その後、()はパラメーターを受信できます。このコールバックは、Promise Resolve()の場合にのみ呼び出されます。
その後、()は2番目のパラメーターを受信することもでき、2番目のコールバックを使用してPromise Reject()の状況を処理します。
CATCH()は、特にPromise reject()の状況を処理します。
言い換えれば、()は両方の方法で使用でき、catch()はreject()のみを処理できます。ただし、relow()とcatch()を処理してreject()を処理するために()を使用することをお勧めします。
2。しかし、私が話したいのは上記ではありません。上記は、基本的な使用法の単なるレビューです。ここでは、thon()およびthen()メソッドの返品値とチェーン使用量の詳細から始めます。
次に、公式の文書には、()とcatch()の両方が約束を返すと述べています。これは非常に興味深いことです。 (私はJSの初心者であり、野生の以前の約束にさらされたことはありません)。
まず第一に、この新たに戻った約束は当初の約束ではありません。
第二に、新たに返された約束の状態(Resolve()またはrequed())の状態の変化は、以前の約束の状態と()()の使用方法に関連しています。
最初にthenの状況を説明する():(キャッチは似ています)
var p1 = promise.resolve( "success"); var p2 = p1.then(task1); var p3 = p2.then(task2);
注:上記のタスク1とタスク2はどちらもコールバックです。
ここで、P1は作成された約束であり、直接解決します();
P2はtun()で得られる約束であり、P3は()で得られる約束でもあります。
では、P2の状態はどのように変化し、P3はどうですか?
次の図を使用して、この概念を説明します。
で、
1.オクタゴンは約束のオブジェクトを表します。
2。円は約束の中の状態を表し、黒い矢印は状態の変化を表します。
3.右矢印は、then関数を呼び出すことを表します。
4。つまり、当時の関数が呼び出される限り、新しい約束オブジェクトが生成されます。
5. Then関数を呼び出すとき、前のPromiseオブジェクトのステータスが何であるか、それが保留中であろうと解決されているかどうかはわかりませんか?これは想定できず、屋外では見られません。
6. Then関数の呼び出しはブロックされません。つまり、P1がまだゆっくりと自社の状態を移行している場合でも、P2とP3はほぼ瞬時に生成されます。
P1の状態が解決されたことがわかっています(上記のコードを参照)。しかし、P2とP3の状態がどのように変化するかはここで説明されていませんが、解決または拒否されていますか?下の新しい写真を見てください。
より多くのダイヤモンドを見ることができます。
ダイヤモンドは、その後呼び出されたときに渡されたコールバック関数を表します。上向きの菱形は、[以前の約束オブジェクトのために解決された]で通過するプロセスを表し、下向きの菱形は[以前の約束オブジェクトのために拒否された]で通過するプロセスを表します。
注:この例では、拒否のための処理が渡されません。つまり、下向きのダイヤモンドを上の写真に描くべきではありません。便利なため、上向きと下向きのダイヤモンドが当時の使用方法またはキャッチに関連していることを知る必要があります。サンプルコードをもう一度見てみましょう。
var p1 = promise.resolve( "success"); var p2 = p1.then(task1); //上向きの菱形が生成されますvar p3 = p2.then(task2); //上向きの菱形が生成されます
当時の2番目のパラメーターを与えないことがわかります。つまり、拒否を処理しません。
追加するには、拒否に対処したい場合は、使用またはキャッチできます。キャッチは拒否に対処するために特別に使用されます。それとは別に、その間に違いはありません。
1. P1の最終状態(解決または拒否)が正しく処理された場合(呼び出すと、対応するコールバックが渡される、つまり対応するダイヤモンドがあります)、P2の状態が解決するように変更されます。
2。P1の最終状態(解決または拒否)が正しく処理されない場合(呼び出すと、対応するコールバックがありません。つまり、対応するダイヤモンドはありません)、P1の状態はP2にルーティングされます(P1の受信状態)。
3。このように渡します。
4.この記事では、コールバックで最後の約束の最終データを取得する方法、つまりデータを渡す方法を説明する方法は説明していません。多くのチュートリアルがあります。
3。この記事を要約する例をいくつか紹介します。
図では、P1の状態が与えられ、解決または拒否が自分で与えられます。目標は、P2とP3の最終状態を開始することです。
上記は4つの独立した例であり、それらの間に接続はありません。
Xは、P3が当時またはキャッチ機能を使用しないことを意味するため、解決や拒否に対処する方法はありません。
最後に、エラーがある場合は、時間内に私を修正してください、ありがとう! 〜! ! @~~~
上記の記事JS Promise Chainの詳細な理解は、私があなたと共有したすべてのコンテンツです。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。