約束は学ぶことは簡単です、メモ
言葉遣いと同期の約束は、非同期コールバックピラミッドの問題を解決しました
として
getData1(DATA1 => { getData2(DATA1、DATA2 => { getData3(DATA2、DATA3 => { getData4(DATA3、DATA4 => { getData5(DATA4、DATA5 => { // 终于取到DATA5の了 }) }) } ) }) })
用約束
getData1() .then(getData2) .then(getData3) .then(getData4) .then(getData5) .then(データ => { // 取到最终データ了 })
基本的な使い方
Pは=ましょう新しい新しい約束((解決、拒否)=> { // 何かを //は、その後、一定の条件の下で解決する、または拒否 IF(/ * 条件を簡単に書く_ ^ ^ * / ){ 決意() } 他の{ 拒否() } }) p.then(() => { // pは、状態が解決された場合、ここに進む )=>(} { // 状態を拒否がPである場合 )}
- 新しい約束は非同期プロセスがオブジェクトに変換され約束することができます。そのオブジェクトへの約束、として、プログラムの約束を持っています。
- 状態は.thenオブジェクト登録したコールバック関数を約束するために使用します。これは、呼び出しが.then .thenを続けるの背後にある、連鎖させることができ、約束のオブジェクトを返します。状態で登録されたコールバック関数は、オブジェクトの.then約束は状態を返したreturn文によって変更され、バック.thenコールバック登録状態にデータを渡すことができ、デフォルトの約束は、返されるオブジェクトを解決するためにあるようreturn文は、使用できない場合があります。
- 登録拒否状態のためのコールバック関数.catch、だけでなく、コールバックプロシージャのエラー訂正、つまり、前回のプログラム実行エラーのプロセスは、コールバック関数の実装を入力するかどうか。.thenと同じように新しいオブジェクトの約束に戻ります。
- Promise.resolve呼び出しは、オブジェクトの約束履行状態のステータスを返し、引数は状態データとして、後にコールバック関数に渡されます
- Promise.rejectとPromise.resolve同様に、返されたオブジェクトの状態が拒否されたことを除い約束
アナログ信号機
componentDidMount(){ 関数赤(){ にconsole.log( "赤色" )。 } 関数イエロー(){ にconsole.log( "黄色" )。 } 関数緑色(){ にconsole.log( "グリーン" )。 } 光せ =(FNタイマ)=> 新しいプロミス(決意=> { たsetTimeout(関数(){ FN(); 解決(); }、タイマ) }) 機能開始(){ Promise.resolve()。次に、(() => { 光(赤色、 3000 ) })。次に、(() => { 光(黄色、 5000 ) })。次に、(() => { 光(緑色、 8000 ) }) } )(開始。 }
私は反応でテストプロジェクトを書きました
録画メモ。