1、我々は最初の非同期の基本的な意味を理解する必要があると待ちます
非同期修飾子はターゲットを解決する約束の関数定義非同期デフォルトの戻り値であり、従って非同期関数は、直接操作することができ、その後、返される値は関数を渡す方法であります
// 非同期ベースの試験の0使用の 非同期関数Fun0(){ にconsole.log( 1 ) リターン 1 } Fun0()。次に、(X => {にconsole.log(X)}) // 出力1 ,. 1、 非同期機能フナ(){ にconsole.log( 'A' ) の戻り 'A' } フナ()。次に、(X => {にconsole.log(X)}) // 出力A、A、 非同期関数Funo(){ console.log({}) 戻り{} } Funo()。次に、(X => {にconsole.log(X)}) //输出结果{} {} 非同期関数funp(){ にconsole.log( '約束' ) を返す 新しい(プロミス関数リジェクト(決意を、){ 解決( 'プロミス' ) }) } funp()。次に、(X => { console.log(x)は}) // 输出約束の約束
また、修飾子待ちます、
非同期キーワードは関数の内部でのみ配置することができます待つ、の役割は、キーを待っていたコンテンツが返さ取得することを約束し、約束は決意の取得した値の関数であるか拒否された
約束の後ろに//そうでない場合は、戻り値を待つだろう戻り値に応じて同期手順
//は 非同期キーワードは関数の内部でのみ配置することができます待つ、の役割は鍵が約束を返されたコンテンツを取得することです待って、約束は決意の取得した値の関数であるか拒否 // 約束が戻って戻り値を待つされていない場合、戻り値は同期手順に従って処理されるが未定義 CONST BBB = 関数(){ 戻り「文字列」} 非同期関数funAsy(){ CONST Aが待っています。1 = CONST Bは =ザが待つ新しい新しい =)、プロミスは、((解決拒否> { のsetTimeout (関数(){ 解決( '時間' ) }、 3000 ) }) CONST Cは = })のawait BBBを( console.log(A、B、C) funAsy() // 3秒後に演算結果、出力1、時間、文字列、
// 2.そうでない場合、次いで約束の使用 機能をIOG2(時間){ たsetTimeout(関数(){ にconsole.log(時間) リターン 1 }、時間) } 非同期関数FUN1(){ CONST Aが =のawait IOG2(5000 ) BのCONST =ザが待つIOG2(10000 ) CONST C = IOG2(2000 ) にconsole.log(A) はconsole.log( 1 ) } FUN1() // 演算結果上:即時不定出力直後の12秒出力2000第二の出力500010万の第二の出力後
2、総合的な使用方法の非同期/のawaitは、以下が明らかです
// 1は、1つ以上の一般的な機能を定義し、関数は、他のタイプのデータは、従来の同期プログラムに従って、処理を返した場合、プロミスオブジェクトを返さなければならない 機能ログ(時間){ 戻り 新しい新しいプロミス((解決、拒否)=>を{ のsetTimeout (関数(){ にconsole.log(時間) を解決() }、時間) }) } 非同期関数ファン(){ のawaitログ( 5000 ) のawaitログ( 10000 ) ログ( 1000年) はconsole.log( 1 ) } ファン( )
// 3.非同期/のawait的重要应用 CONST ASY = 関数(X、時間){ 戻り 、新たな約束を((解決、リジェクト)=> { たsetTimeout(() => { 解決(X) }、時間) }) } CONST追加 =非同期関数(){ CONST =はASYを待つ(3、5000 ) にconsole.log(A) CONST B = ASYを待つ(4、10000 ) にconsole.log(B) CONSTのC =はASYを待つ(5、15000 ) console.log(A、B、C) CONST D = A + B +C にconsole.log(D) } の追加(); // 5秒と10秒後の出力3と出力4出力5及び15秒直ちに3,4,5-出力は、出力12