解決コールバック関数

1.まず、我々はコールバックとコールバック地獄を理解する必要があります

(1)コールバック関数:あなたは、引数としての機能を渡して、特定の機能を実現する機能を実行すると、何かが発生した場合、それはこの機能を実行します

非同期操作は、彼の他の操作の結果を待つための非同期操作によって、ネストされたコールバック非同期操作に分類していきます、それはコールバック関数のイベントであるかそうでないかどうか、待たなければ前に非同期操作が完了した:(2)コールバック地獄、プロセスの複雑さは、これは急激な増加を関連するコードになります(最も単純なシナリオでは、我々は最初のスタンドアローンのイベントは、このように第二のスタンドアローンのイベント内にネストしている場合、最後に、スタンドアローンのイベントを結合していることです彼らはトリガすることができます前に、出力は、その後、私たちは)最後の点の背面に向ける必要があります[これは非常に面倒ですが、それは解決策があります]

私たちは、それが問題の非同期ことは確かに間違いありません、コールバックを呼び出します

ESの公式は、非同期シーンの数を調べた非同期モデルの共通セットをまとめ、このモデルは、ほぼすべての非同期のシナリオのカバーすることができます

あるもの非同期操作が発生する可能性がありますとき、私たちは2つの段階に分け:
未決済保留中のステージ
決着がステージに決定しました

ES6プログラムは3つの部分に分かれ:保留が拒否解決さ

保留:保留中(待機中)のステージを保留され、状況が保留中であることを述べ、最終的な結果は出てきませんでした
解決:結果を段階的に扱われていなかった、結果は全体のことが発生したことを示す、と通常のロジックに従って進行することができます
拒否:結果は決定段階で拒否された、結果は全体のことが発生したことを示すと、通常のロジックに従って進めることができません

2.解決コールバック地獄いくつかの方法があります非同期/のawaitを約束    

約束する:

(1)は、プロミスのインスタンスを取得することを約束し、プロミスは、新しい新しいもの()コンストラクタです。

(2)約束に、二つの機能、(成功コールバック関数の後)という名前の決意があると(失敗コールバック関数の後に)拒否します

彼の書き込み:

新しいプロミス((決意、リジェクト)=> {

 保留中のステージ

これは、関数解決の約束を呼び出すことで、ステージの解決に状態をプッシュすることを決定しました

状態を拒否するようにプッシュ機能の約束を呼び出すことで、ステージを拒否することを決定しました

注:解決と一つだけの使用を拒否し、複数の利用であれば、最初に有用

})

プロの新しい新しい約束=一定((解決、拒否)=> {
解決(成功)
(失敗)//スロー障害効果を拒否プッシュと同じです
})

すべてのメソッド:このメソッドは、成功した意志トリガ約束がオブジェクトならば、彼らはオブジェクトを倒すために失敗した場合、そのすべてが、新しい約束がオブジェクトを返しますが約束され

成功:

FUN1 =()=> {せて
新たな約束を返す(拒否、解決()=> {
解決({
データ'1'
})
})
}

)(= fun2せ=> {
新たな約束((決意、拒否)を返します=> {
解決({
データ: '2'
})
})
}

。Promise.all([FUN1()、fun2()])を((RES1、RES2])=> {
にconsole.log( `RES1: $ {res1.data}、RES2:$ {res2.data} `)
})

 

 失敗しました:

FUN1 =()=> {せて
新たな約束を返す(拒否、解決()=> {
解決({
データ'1'
})
})
}

)(= fun2せ=> {
新たな約束((決意、拒否)を返します=> {
拒否({
データ: '2'
})
})
}

。Promise.all([FUN1()、fun2()])を((RES1、RES2])=> {
にconsole.log( `RES1: $ {res1.data}、RES2:$ {res2.data} `)
})

 

 ()レース:あなたが戻っての完全な使用のために行くときに任意のオブジェクトパラメータは、完成された約束
成功または失敗の結果にかかわらず、結果オブジェクトを約束

3.非同期/のawaitキーワードは、ES2016の両方で新しく追加されました

非同期:約束の作成を簡素化

非同期関数F { リターン1 }

await:待ち時間のawaitキーワードは、非同期機能で表示される必要があります

非同期関数f(){
約束=新しい約束((解決、拒否)=> {せ
たsetTimeout(()=>解決( '你好')、1000)
})
結果=のawait約束を聞かせて
警告(結果を)
}
はf( )

非同期関数内のawaitキーワードには約右遊び、そうでない場合は、このエラーを報告します

 

おすすめ

転載: www.cnblogs.com/zhangli123/p/12577235.html