ホームページ  >  記事  >  ウェブフロントエンド  >  ノードAsyncを使った非同期処理の詳細説明

ノードAsyncを使った非同期処理の詳細説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-14 16:03:061262ブラウズ

今回はノードAsyncの非同期処理の詳細説明をお届けします。ノードAsyncの非同期処理の詳細説明の注意事項は何ですか?以下は実際のケースです。

最近、nodejsの勉強をしているのですが、しみじみ思うのは… jsのコードに詳しい地球人なら、jsの読み込み順序がとても重要だということを知っていますね!とても重要です! !次に、ノードを作成するときに多くのインターフェイスがバックグラウンドで要求されます (当社では Java バックグラウンドでデータを転送します)。そのインターフェイスにはコールバックが含まれますが、それぞれのコールバックが返されます。ロード順をどうするかが問題…ネストできない…ネスト…やろう、めんどくさい! !なんでこんな大きな問題が解決しないんだろう…それは無理だよね!

Async 非同期処理モジュール!

以下は小さなサムの理解です:

インストールは、通常のインストールモジュールと同じように非常に簡単です

インストールは成功しました! 次のステップは、コード内でモジュールを引用することです:

var async = require('async');
このまま引用してもOKです!コードの背後で async オブジェクト モジュールを簡単に使用できます。

公式ドキュメントを確認したところ、このモジュールにはメソッドが多すぎることがわかりました。見るのがめまいがします...

編集者がより一般的に使用されていると考えるいくつかの方法について話しましょう

シリーズ 1.series(tasks, [callback]) は、配列とコレクション内の関数を順番に実行します。前の関数が実行されると、すぐに次の関数が実行されます。関数がエラーをトリガーした場合は、コールバック関数で確認できます。そうでない場合は、タスクを完了し続けます

。 あまり話しても無駄です、コードは本当の父親です

使用例:

//tasks传的是一个数组函数
async.series([
  function(callback) {
  // do some stuff ...
  callback(null, 'one');
},
 function(callback) {
 // do some more stuff ...
 callback(null, 'two');
}],
// optional callback
//我觉得这里很重要err是上面两个函数的错误信息,而results这个参数是一个数组对象,它们的值是上面数组函数每个callback里面的参数。
function(err, results) {
// results is now equal to ['one', 'two']
});
// an example using an object instead of an          
//下面的代码其实跟上面的差不多,只是stasks传的是对象而不是数组
async.series({
one: function(callback) {
  setTimeout(function() {
    callback(null, 1);
  },
  200);
},
two: function(callback) {
  setTimeout(function() {
    callback(null, 2);
  },
  100);
 }
},
function(err, results) {
// results is now equal to: {one: 1, two: 2}
});

平行 2.Parallel(tasks, [callback]) 配列およびコレクション内のメソッドを並列に実行します。 関数がエラーを引き起こした場合、前の関数が実行されるまで待つ必要はありません。コールバック関数

 async.parallel(
[
 function(callback) {
  setTimeout(function() {
     callback(null, 'one');
    },
  200);
 },
 function(callback) {
  setTimeout(function() {
    callback(null, 'two');
  },
  100);
 }
],
 // optional callback
 function(err, results) {
  // the results array will equal ['one','two'] even thoug
  // the second function had a shorter       
  timeout
 }
);

並列制限 3.ParallelLimit(tasks,limit,[callback]) 使い方は2と同じですが、タスク数に追加制限があり、並列実行できるタスクの最大数が決まります

しながら 4.whilst(test, fn, callback) は while の使用法に相当します。最初のパラメーターは検証条件、2 番目のパラメーターは実行関数、3 番目のパラメーターは検証失敗後の

コールバック関数

です。通常、遅延アニメーションに使用されます

var count = 0;
 async.whilst(
 function () { return count < 5; },
 //验证成  功继续,失败进回调
 function (callback) {
   count++;
   setTimeout(callback, 1000);
 },
 function (err) {
   // 5 seconds have passed
 }
);

5.waterfall(tasks, [callback]) タスクは順番に実行されます。前の関数のコールバックは、次の関数のパラメータとして使用されます。いずれかのタスクがエラー コールバックを渡した場合、次の関数は実行されません。

作曲

6.compose(fn1, fn2...) 順番にキューに追加、順番に実行、前の関数の結果を次の関数の値として使う

async.waterfall([
 function(callback){
   callback(null, 'one', 'two');
 },
 function(arg1, arg2, callback){
  // arg1 now equals 'one' and arg2 nowequals 'two'
   callback(null, 'three');
 },
 function(arg1, callback){
   // arg1 now equals 'three'
   callback(null, 'done');
 }
 ], function (err, result) {
  // result now equals 'done'  
});
事例を読んでやり方はマスターできたと思いますこの記事では、php 中国語 Web サイトの他の関連記事にも注目してください。

推奨読書:


以上がノードAsyncを使った非同期処理の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。