非同期のawait

非同期、待つと競合しないと約束、それは約束の延長であり
1、次いでだけスプリット・コールバック(以前callbakも関数であるが、アセンブリの背面を分割することができます)

 

機能WaitHandle(){
  VAR DTD .Deferred = $(); //は、繰延オブジェクトの作成

  VAR待機= 機能(DTD){ //は渡すオブジェクトが延期される必要が
    VaRのタスクを= 関数(){ 
      はconsole.log(「実行完了' ); 
      dtd.resolve(); // 非同期タスクのための完了
      // dtd.reject(); //非同期タスクが失敗を示すか、エラー
    } 
    のsetTimeout(タスク 2000 );
    戻り dtd.promise(); // Deferredを戻って、直接ではなくバックの約束、
  } 

  // この値が返されなければならないことに注意してください
  返す待機(DTD)を; 
}

VAR = W waitHandle()。
w.then(関数(){ 
  にconsole.log( 'OK1' 
}、関数(){ 
  にconsole.log( 'ERROR1' 
})。次に、(関数(){ 
  にconsole.log( 'OK2' 
}、関数(){ 
  にconsole.log( 'ERROR2' ); 
})

 

 

2、aysnc /それは(同じ文言と実行のための)最も直接的な同期表現で待ちます

 

インポート「バベル-ポリフィル」;
関数loadImg(SRC){ 
  CONST約束 = 新しいプロミス(関数(決意、リジェクト){
    VARの IMG =のdocument.createElement( 'IMG' ); 
    img.onload = 関数(){ 
      解決(IMG); 
    } 
    img.onerror = 関数(){ 
      リジェクト(); 
    } 
    img.src = SRC; 
  })
  戻り約束。
} 

CONST負荷 =非同期関数(){ 
  CONST結果1= loadImg( 'xxx.png'を待ちます)。
  console.log(結果1)。
  CONSTは結果2 =はloadImg( 'yyy.png'を待ちます)。
  console.log(結果2)。
} 
負荷()。

 

使い方

1、のawaitの使用、関数は非同期に識別されなければなりません
2、待つ続く例は、約束であります
3、バベル-ポリフィルを必要とする(互換性の意味)
NPM I --save-devのバベル、ポリフィル

 

概要
1、約束、そして競合との約束はありません
2、言葉遣いが完全に同期され、コールバック機能なし
3、しかし:シングルスレッド、非同期の性質を変更しないJS

おすすめ

転載: www.cnblogs.com/wzndkj/p/11007391.html