例では:
async.eachLimit([1,2,3,4,5,6,7,8,9,10], 6, function(a, b) {
console.log("current: " + a);
b("done");
},
function(err) {
if (err) {
console.log("error");
} else {
console.log("completely done");
}
}
);
出力:
current: 1
error
current: 2
current: 3
current: 4
current: 5
current: 6
undefined
なぜそのような奇妙な行動をするのですか?エラーと未定義はどこから来ますか? そして、他の 4 つの要素はどこで処理されますか? 非同期のコールバックはいつ呼び出されますか? 私から期待されるように:
current: 1
done
current: 2
done
current: 3
done
current: 4
done
current: 5
done
current: 6
done
current: 7
done
current: 8
done
current: 9
done
current: 10
done
compeletely done
そのため、同時にアクティブになる要素は 6 つだけです。
期待どおりに非同期の動作を取得するには、何を変更する必要がありますか?
アップデート:
そして、私が使用する場合
async.**eachSeries**([1,2,3,4,5,6,7,8,9,10], function(a, b) {
console.log("current: " + a);
b("done");
},
function(err) {
if (err) {
console.log("error");
} else {
console.log("completely done");
}
}
);
出力も奇妙です:
current: 1
error
undefined