nightmare
コールバック関数の非同期を処理するために、async
モジュールで入れ子のforループを実行しようとしています。簡単に言うと、私がやっているのは、同じのオブジェクトを同じnode
インスタンスで実行していて、Webサイト上の別のリンクに移動しているということです。node.jsの非同期モジュールをネストしたForループ
私が読んだことによると、ループに次のインデックスに移動するように通知するには、next()
関数を呼び出す必要があります。これは、ただ一つのforループでうまくいきます。私がasyncOfSeries
を入れ子にしたとき、内部のnext()
関数は、内側のループ上で、外側のループ上では実行されません。
あなたがよりよく理解できるように、コードのスニペットをご覧ください。
var Nightmare = require('nightmare');
var nightmare = Nightmare({show:true})
var complexObject = {
19:["11","12","13","14","15"],
21:["16"],
22:["17"],
23:["18","19"]
};
//looping on each object property
async.eachOfSeries(complexObject, function(item, keyDo, next){
//here im looping on each key of the object, which are arrays
async.eachOfSeries(item, function(indexs, key, nexts){
nightmare
.//do something
.then(function(body){
nightmare
.//do something
.then(function(body2){
nightmare
.//do something
.then(function(body3){
//Here I call next() and expecting to call the next index of the inner loop
//but is calling the next index of the outer loop and the inner for is just
// executing one time.
next();
});
});
});
});
});
を私は内側のループの後に別のnext()
を呼び出すようにしようとしましたが、エラーを投げています。なぜ誰かが内部ループが1回だけ実行されているのか考えていますか?
? –
スニペットを編集しました。 @ stdob-- –
あなたは約束を使っているので、おそらくasync.jsを使うべきではありません。彼らはうまく構成されません(あなたはエラーをまったく処理しません)。 – Bergi