私はこの方法で長すぎます。おそらく、ここの誰かが私を少し助けてくれるでしょうか?Nodejsはそれぞれ内側の滝の内側に非同期に配置されています
私はオブジェクトの配列を含むオブジェクトを持っています、そして、私は先に進む前に順番に各オブジェクトのためのいくつかの操作を行う必要があります。
私は期待してい何var demo = {
one: ['1'],
two: ['2'],
three: ['3', '4', '5']
};
async.waterfall([
function(callback) {
console.log("Step 1");
setTimeout(function() {
console.log("Doing stuff...");
callback(null, demo);
}, 1000);
},
function(prevData, callback) {
console.log("Step 2");
async.each(prevData, function(obj) {
async.each(obj, function(item, callback2) {
setTimeout(function() {
console.log("Doing stuff for item: "+item);
callback2(null, demo);
}, 1000);
});
});
callback(null, demo);
}
], function(err) {
if(err) {
alertify.error("Unhandled exception: "+err);
} else {
console.log("All stuff done.");
}
});
は、次のとおりです:ここでは、多くの一つは、私がしようとしてきた、単純化した例です
Step 1
Doing stuff...
Step 2
Doing stuff for item: 1
Doing stuff for item: 2
Doing stuff for item: 3
Doing stuff for item: 4
Doing stuff for item: 5
All stuff done.
しかし、私は何を得る:
Step 1
Doing stuff...
Step 2
All stuff done.
Doing stuff for item: 1
Doing stuff for item: 2
Doing stuff for item: 3
Doing stuff for item: 4
Doing stuff for item: 5
しようとしてきた場合は、おそらく、正しいレベルを除いて、私が考えることができる各レベルからのコールバックのすべての組み合わせです。明白である必要がありますが、私はちょうどそれを取得しません...
シーケンス自体は正しいですが、項目を操作する必要がある機能は、後で実行されません。
おっと、ありがとうございます。テスト用のコードで出力を修正しましたが、ここに貼り付けたコードスニペットを更新するのを忘れました。今更新されました。 –
関数をインライン化するのではなく、関数を抽出すると、コードが読みやすくなります。読みにくいです。 [要点](https://gist.github.com/sellomkantjwa/a8c3dd058c26646ea666312b61f82908)ここで、機能の一部はインラインではありません: –
本当です。最終的なコードはextactされた関数であり、これは問題を見つけてそれを実証することです:) –