Node.js
コールバック地獄を避ける
サーチ…
非同期モジュール
ソースはGitHubからダウンロードできます。または、npmを使用してインストールすることもできます。
$ npm install --save async
Bowerと同様に
$ bower install async
例:
var async = require("async");
async.parallel([
function(callback) { ... },
function(callback) { ... }
], function(err, results) {
// optional callback
});
非同期モジュール
ありがたいことに、Async.jsのようなライブラリは問題を解決しようとしています。 Asyncは、コードの上に機能の薄い層を追加しますが、コールバックの入れ子を避けることによって複雑さを大幅に減らすことができます。
シリーズ、パラレル、ウォーターフォールなどのさまざまな状況で使用できる多くのヘルパーメソッドがAsyncに存在します。各関数には特定のユースケースがあります。
Asyncは、何かのように、完璧ではありません。シリーズ、パラレル、永遠などを組み合わせることで逃げ出すのは非常に簡単です。その時点であなたは乱雑なコードで始まったところに戻ります。途中で最適化しないように注意してください。いくつかの非同期タスクを並行して実行できるからといって、必ずしもそうであるとは限りません。実際には、ノードはシングルスレッドのみであるため、Asyncを使用して並列にタスクを実行すると、パフォーマンスはほとんど向上しません。
ソースはhttps://github.com/caolan/asyncからダウンロードできます 。または、npmを使用してインストールすることもできます。
$ npm install --save async
Bowerと同様に
$ bower install async
非同期の滝例:
var fs = require('fs');
var async = require('async');
var myFile = '/tmp/test';
async.waterfall([
function(callback) {
fs.readFile(myFile, 'utf8', callback);
},
function(txt, callback) {
txt = txt + '\nAppended something!';
fs.writeFile(myFile, txt, callback);
}
], function (err, result) {
if(err) return console.log(err);
console.log('Appended text!');
});
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow