Node.js非同期処理の各種の書き方を詳しく説明します。
非同期の坑
最近、Node.jsバックグラウンドプロジェクトの開発に参加しました。PHP開発者として、プロジェクト自体は難しくないですが、開発の過程はうまくいかないです。 同期の思惟は 非同期的思考
いわゆる 同期とは、プログラム(スレッド)が一つのタスクの処理中に、他のタスクを挿入せず、IOなどCPUを占有しない操作があっても、その終了を待っています。
いわゆる 非同期とは、プログラム(スレッド)が一つのタスクの処理中に、IO操作など他のタスクを挿入して処理し、現在のタスクはプログラム(スレッド)の制御権を他のタスクに解放し、IO操作の結果が戻ったら次の処理を継続します。
ご存知のように、Node.jsは単スレッドの非同期モデルを採用しています。具体的なコードの書き方では自然とPHPなどの同期モデルとは異なります。具体的なプロジェクトの開発において、各種の非同期操作に関するキーワードが次々と出現しています。 .then() function*…yield、 async…awaitなど。書くために クラスの同期の操作は、例えば、「Aステップを実行して結果を得てからBステップを実行する」という簡単な要求が、大量の繰り返しデバッグ検証を経て解決できます。なぜなら、これらの非同期操作のシーンとキーワードの意味がよく分かりません。非同期操作で提供される選択が多すぎます。
コードの例に関連して、これらの非同期動作のパラメータは具体的にどのように使用されますか?
非同期的な書き方
タスク説明:プロジェクトルートディレクトリの下に三つのファイルがあります。 Jay.txt、 アンジェラ.txt、 Henry.txtは、この3つのファイルの内容を順次読み、印刷します。
以下は様々な非同期処理を用いてこのタスクを完了します。
コールバック関数
ps:Nodejsの非同期処理(非同期データを取得して処理する)の方法を見ます。
方法1.コールバック関数方式
非同期法のようなreadFileをカスタム関数にパッケージし、非同期法で得られた結果をカスタム方法のコールバック関数パラメータに伝える。具体的には、以下のように(fsモジュールのreadFile方法を例にとって):
node eventsモジュールを使用して、そのEventEmitterオブジェクトブロードキャストとブロードキャストを受信する方式で非同期方法を転送して帰った結果。具体的には、fsモジュールのreadFile非同期方法の例として以下の通りである。
以上述べたのは小编が皆さんに绍介したノード.js非同期処理の各种の书き方です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。
最近、Node.jsバックグラウンドプロジェクトの開発に参加しました。PHP開発者として、プロジェクト自体は難しくないですが、開発の過程はうまくいかないです。 同期の思惟は 非同期的思考
いわゆる 同期とは、プログラム(スレッド)が一つのタスクの処理中に、他のタスクを挿入せず、IOなどCPUを占有しない操作があっても、その終了を待っています。
いわゆる 非同期とは、プログラム(スレッド)が一つのタスクの処理中に、IO操作など他のタスクを挿入して処理し、現在のタスクはプログラム(スレッド)の制御権を他のタスクに解放し、IO操作の結果が戻ったら次の処理を継続します。
ご存知のように、Node.jsは単スレッドの非同期モデルを採用しています。具体的なコードの書き方では自然とPHPなどの同期モデルとは異なります。具体的なプロジェクトの開発において、各種の非同期操作に関するキーワードが次々と出現しています。 .then() function*…yield、 async…awaitなど。書くために クラスの同期の操作は、例えば、「Aステップを実行して結果を得てからBステップを実行する」という簡単な要求が、大量の繰り返しデバッグ検証を経て解決できます。なぜなら、これらの非同期操作のシーンとキーワードの意味がよく分かりません。非同期操作で提供される選択が多すぎます。
コードの例に関連して、これらの非同期動作のパラメータは具体的にどのように使用されますか?
非同期的な書き方
タスク説明:プロジェクトルートディレクトリの下に三つのファイルがあります。 Jay.txt、 アンジェラ.txt、 Henry.txtは、この3つのファイルの内容を順次読み、印刷します。
以下は様々な非同期処理を用いてこのタスクを完了します。
コールバック関数
ps:Nodejsの非同期処理(非同期データを取得して処理する)の方法を見ます。
方法1.コールバック関数方式
非同期法のようなreadFileをカスタム関数にパッケージし、非同期法で得られた結果をカスタム方法のコールバック関数パラメータに伝える。具体的には、以下のように(fsモジュールのreadFile方法を例にとって):
//
var func = function(filePath,callback){
fs.readFile(filePath, function(err, data){
if(err){
return false;
}
callback(data);
})
}
//
func('./a.txt', function(res){
//
console.log(res);
})
方法2.イベント駆動方式node eventsモジュールを使用して、そのEventEmitterオブジェクトブロードキャストとブロードキャストを受信する方式で非同期方法を転送して帰った結果。具体的には、fsモジュールのreadFile非同期方法の例として以下の通りである。
var events = require('events');
var EventEmitter = new events.EventEmitter();
fs.readFile('./a.txt', function(err, data){
// readData , data
EventEmitter.emit('readData', data);
})
// readData , ( , )
EventEmitter.on('readData', function(res){
//
console.log(res);
})
締め括りをつける以上述べたのは小编が皆さんに绍介したノード.js非同期処理の各种の书き方です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに皆さんに返事します。