定義
まず、明確に、約束は非同期です。JSイベントループ非同期動作は、JSイベントループ機構によって達成されます。
約束のMDNウェブドキュメントの解釈:プロミスオブジェクトは、プロキシオブジェクト(プロキシ値)は、約束プロキシオブジェクトの作成時の値が不明であることもあります。これは、各それぞれの結合処理方法(ハンドラ)の成功と失敗の非同期操作にことができます。これは、同期方法として値を返すことができる非同期メソッドを可能にするが、直ちに実装の最終的な結果を返していないが、将来の結果の代表的なプロミスオブジェクトに表示されます。
約束のオブジェクトは、3つの状態があります。
1、ペンディング(保留)
成就2、(達成するために/解決)
拒否3、(拒否/実装されていません)
保留中の成就単方向に変換することができ、チェックが拒否に変換することができるが、成就と拒否の間で変換することはできません。
それを理解するには?ここでは話に示します。
物語
王六年生は今年、小幅な上昇の始まりでの圧力の下で、その仕事は時々もう少しですが、王が出て行くと遊ぶように思われます。
お父さん今日は良いニュースをもたらし、彼は王の約束(プロミス)、それは週末に雨しない場合は、動物園に王を取ったと述べました。
だから、王雨(penging)なしで週末を祈る毎日。
可能な1:あなたが動物園王の友人(成就)に行くことができ、週末に雨はありません。
可能なII:雨は、王は唯一の宿題(拒否)をやって自宅ですることができます。
例
1 // ブールで表さ雨値 2 LET = ifRain trueに; 。3 4。 goToZooは=ましょう新しい新しい約束(関数{(解決、拒否) 5。 // それは雨のない場合は、動物園に行く 6。 のIF(!IfRain){ 7。 メッセージ= "動物園に移動"させ; 8。 解決(メッセージ); 9 } 10 // 雨の宿題 11。 他{ 12は LETメッセージ= 新しい新しいエラー( "宿題をする" ); 13である (メッセージ)を拒否; 14 } 15 }); 16 17 LETテスト= 関数(){ 18 goToZoo.then(関数(成立){ 19 満たさにconsole.log(); 20 })。キャッチ(関数(拒否){ 21 にconsole.log(rejected.message); 22 }) 23 }。 24 25試験()。
ifRainがtrueの場合、出力は宿題をし、偽で、出力は動物園に行きます。
ここで約束の使用法は次のとおりです。
新しいプロミス(関数(決意、リジェクト){...} / *キュータ* /)。
コミットメントが達成されていない場合、それは機能を拒否呼び出します、その状態が変化し、ここで、解決のパラメータは時間を達成するためのコミットメントは、関数呼び出しを解決します、その後、状態は、対応する約束が果たさなったときに、関数で拒否です拒否されました。
エグゼキュータは、関数です。そして、決意エグゼキュータを拒否もちろん、これら2つのパラメータを埋めるオプションですが、中に移すパラメータです。解決するか、それが出て渡すパラメータとしての機能になります場合、呼び出しを拒否し、それが出て合格する機能になりますが、それは約束が達成されていない示して拒否されます、説明約束が達成解決、それは間違いのと同じですので、エラーメッセージはそれがパラメータとして出て渡します。