従来の解決方法:
マルチスレッド:マルチスレッドコンテキスト切替問題、ロック問題、同期問題 c/c++手動で完了:敷居が高いNodeイベントベースの非ブロックプログラミング
メリット:
非ブロックI/Oは、CPUとI/Oを依存することなく、リソースをより大きく利用することができる.
ネットワーク応用に対して、並列にもたらす優位性はもっと大きく、分布式とクラウドの応用に有利である.
c/c++の拡張モジュールが呼び出されたため、nodeのパフォーマンスはより高い.
難点:
異常処理 try/catch/finalを使用して非同期プログラミングを異常処理することはできません.異常が発生したコードは必ずしも今回のイベントサイクルで実行されるとは限らないため、callbackの最初のパラメータにエラーが報告されたかどうか、エラーが報告されていない場合nullエラーが返された場合errorオブジェクトが返される解決方法が捉えられない可能性があります.原則:カスタム非同期メソッドを作成する場合は、呼び出し元からのパラメータを実行する必要があります.パラメータcallback(null,results)を正しく返す必要があります.
ユーザ呼び出しコールバック関数try/catchtry {
req.body = JSON.parse(buf, options.reviver);
callback();
} catch (err){
err.body = buf;
err.status = 400;
callback(err);
}
これにより、callbackでエラーが発生し、catchが発生し、callback解決方法が2回呼び出されます.try {
req.body = JSON.parse(buf, options.reviver);
} catch (err){
err.body = buf;
err.status = 400;
callback(err);
}
callback();
ブロックコード:whileでブロックしないでsettimeout マルチスレッド:childでprocess マルチソリューション非同期プログラミングの利点と難点-マルチ非同期間のコラボレーションスキーム 転載先:https://www.cnblogs.com/ranjianxi/p/8404539.html