プロミス学習はES6オブジェクト

プロミスオブジェクトである何1.?

より合理的かつより強力な- -コールバック関数とイベントの約束は、従来のソリューションよりもソリューション非同期プログラミングです。約束は、ネイティブオブジェクトを提供します。プロミスイベントは、単純にのみ実行後に保持している容器です。レベルは、文法、約束がオブジェクトである、あなたはそれの非同期操作からメッセージを取得することができます。統一されたAPIを提供することを約束は、さまざまな非同期操作は同じように扱うことができます。

2.Promiseオブジェクト機能

(1)まず約束外部からの影響から、オブジェクトの状態が無料。:第二約束のオブジェクトは、次の3つの状態がある、非同期操作を表しpending、(継続中)はfulfilled(して成功した)とrejected(失敗します)。非同期操作の結果のみが、あなたはどのような現在の状態を決定することができ、他の操作は、その状態を変更することはできません。

(2)ステータスの変更後、変更されない、任意の時点で、この結果を得ることができます。Promiseオブジェクトの状態が変化し、2つだけの可能性:からpendingへの変更fulfilledやからpendingターンrejected限り、これら二つのことが起こるように、状態が固定され、変更することはないであろうし、その結果を維持します、そして、(確定)解決と呼ばれます。変更が発生した場合は、再度Promiseオブジェクトのコールバック関数を追加し、すぐにこの結果を取得します。

3.Promiseの使用状況

 1.次のように基本的な構文は次のとおりです。

            
            VARの約束は= 新しい新しい約束(機能(解決、拒否を){
               // ...いくつかのコード
              IF/ * コード実行の成功* / ){ 
                解決(値); 
              } { 
                拒否(エラー); 
              } 
            }); 
            約束
            。次いで、(関数(){ 
                 / * コード次の実装を成功させる* / 
            }) キャッチ関数(){
                 / * コードに続く失敗* /
            })

パラメータは、()は、2つのパラメータの関数が他の拒否解決でプロミスの関数であり、これら2つのパラメータは関数の一種です、

この関数は、その後にパラメータとして渡され、成功したコール非同期操作、および非同期操作の結果に、(すなわち、解決係属中から変更)「成功」に「未完」の約束からのオブジェクトの状態の役割を解決することです方法。

rejectこの関数は返すPromise非同期操作が失敗したときに呼び出され、非同期動作エラーがキャッチのメソッドにパラメータとして渡すことができる(すなわち、拒否された保留中の変更)「失敗」に「完了していない」からオブジェクトの状態を。

次の動きは栗です。

<スクリプト>
             VARの約束= 新しいプロミス(関数(決意、リジェクト){
                 VAR NUM = Math.ceil(Math.random()* 100 ); 
                はconsole.log( 'NUM' 、NUM);
                 場合(NUM%2 == 0 ){ 
                    にconsole.log( '解決' 、NUM); 
                    解決(NUM); 
                } { 
                    にconsole.log( '拒否' 、NUM); 
                    (NUM)を拒否; 
                } 
            })。
            promise.then(関数(NUM){ 
                    にconsole.log( 'を' 、NUM)。
                }) キャッチ機能(NUM){ 
                    はconsole.log( 'キャッチ' 、NUM); 
                })
            はconsole.log( 'こんにちは!' );
        </ SCRIPT>

その出力は次のとおりです。

 

 オブジェクトは、その実行順序出力「こんにちは後の「NUM」の出力、ということ再び実行を定義したときに「その後」だけの約束、約束への非同期呼び出しの後です!」。

使用すると()メソッド:

  ()メソッドは、主にアウト渡す受信したパラメータを解決するために使用され、次いで、その後、実際には第2のパラメータタイプの機能もあり、2番目のパラメータはオプションであり、それがアウト渡された受信パラメータを拒否するために使用されます。

その後、()メソッドが戻って新しい約束である手段は、チェーンのメソッド呼び出しをサポートする、オブジェクトことを言及する価値があります。最初の栗の場合:

    <スクリプト>
             VARの約束= 新しいプロミス(関数(決意、リジェクト){
                 VAR NUM = Math.ceil(Math.random()* 100 ); 
                はconsole.log( 'NUM' 、NUM);
                 場合(NUM%2 == 0 ){ 
                    にconsole.log( '解決' 、NUM); 
                    解決(NUM); 
                } { 
                    にconsole.log( '拒否' 、NUM); 
                    (NUM)を拒否; 
                } 
            })。
            promise.then(関数(NUM){ 
                    にconsole.log( 'を' 、NUM)。
                    リターン 1 ; 
                。})を(関数(NUM){ 
                    にconsole.log( 'then1' 、NUM); 
                }) キャッチ機能(NUM){ 
                    はconsole.log( 'キャッチ' 、NUM);
                     リターン 11 ; 
                })
            はconsole.log( 'こんにちは!' );
        </ SCRIPT>
    

次のように出力されます。

 

 戻り値は、第一の伝達関数の値は、第2の方法第2のパラメータとして渡されます。

使用してキャッチ()メソッド:

非同期操作がエラーをスローした場合、ステータスの変更はrejected、呼び出しますcatch。このエラーに対処するために、メソッド指定されたコールバック関数を。キャッチの異なる方法、その後の連鎖メソッド呼び出しはサポートされていません。

使用して最終的には()メソッド:

finallyかかわらず、プロミス最終状態を標的化するために使用される方法の動作は、指定され実行されます。この方法は、任意のパラメータを受け入れない決意やパラメータは、メソッドが動作しない拒否渡しの方法のいずれか、約束が出て渡す引数を受け入れることができません。

 

おすすめ

転載: www.cnblogs.com/lin494910940/p/12443445.html