私はノードを学び、API を書いています。私の API 呼び出しの 1 つは、コンマ区切りのタグを含む Tags というパラメーターを取り、それぞれをディスクに保存します (私は MongoDB + Mongoose を使用しています)。通常、API で DB に保存するときは、コールバックを渡し、そのコールバック内で保存した後も続行しますが、ここでは、ディスクに保存するオブジェクトの数が可変であり、すべてを保存する最もクリーンな方法がわかりません。これらのタグをディスクに保存し、後でそれらを参照するオブジェクトを保存します。誰もが使用するクリーンな非同期パターンを提案できますか? ありがとう!
1006 次
2 に答える
8
asyncは、これらのタスクに適したノード ライブラリです。
複数の非同期呼び出しを並列または連続で実行し、その後 1 つのコールバックをトリガーします。
async.parallel([
function(){ ... },
function(){ ... }
], callback);
async.series([
function(){ ... },
function(){ ... }
]);
于 2012-10-29T21:32:41.763 に答える
3
これは、追加の依存関係が必要ない場合によく使用する一般的なコードパターンです。
var tags = ['tag1', 'tag2', 'tag3'];
var wait = tags.length;
tags.forEach(function (tag) {
doAsyncJob(tag, done);
});
function done() {
if (--wait === 0) allDone();
}
このコードは、配列の各項目に対してdoAsyncJob(tag、callback)を並列に実行し、各ジョブが完了したときにallDoneを呼び出します。データを継続的に(次々に)処理する必要がある場合は、次のパターンがあります。
(function oneIteration() {
var item = tags.shift();
if (item) {
doAsyncJob(item, oneIteration);
} else {
allDone();
}
})();
于 2012-10-29T21:39:41.680 に答える