私はそれがNodeJSに思えるかなり単純な何かをしようとしている - 私は、一度に一つの機能を実行したいです。これらの関数にはすべてコールバックがあります。私は以下の私のコードと、彼らがさらに参照するために実行する関数の概要を述べました。一度に1が、第三の反復は、単に最初の二つの機能を無視して、とにかく行く -実行機能(MongoDBの操作/ Async.js)は
私の問題は、最初の二つは絶対に正常に動作していることです。私のプログラムはオブジェクトをデータベースに入れて動作し、重複するオブジェクトを引き起こしているので、これは本当の問題を引き起こしています。
全体の目標は、各機能を一度に1つずつ実行させることです。私はここに欠けているものはありますか?あなたの助けをありがとう!
以下の機能では、私が読みやすいよう、すべてのパラメータに「引数」を簡略化していることに注意してください。
関数を呼び出す:関数内
addNewProject(args);
addNewProject(args);
addNewProject(args);
、私はこれを実行します。
function addNewProject(args) {
var info = args;
queue.push(function (done) {
loopThroughDetails(info, projID, 0, function() {
console.log('complete');
done(null, true);
});
});
}
これはasync.series(で動作するように統合されloopThroughDetailsを()、)を呼び出します:
をfunction loopThroughDetails(info, projID, i, callback) {
if (i < 500) {
getProjectDetails(projID + "-" + i, function (finished) {
if (JSON.stringify(finished) == "[]") {
info.ProjID = projID + "-" + i;
DB_COLLECTION_NAME.insert(info, function (err, result) {
assert.equal(err, null);
callback();
});
} else {
i++;
loopThroughDetails(info, projID, i, callback);
}
});
}
}
これをすべて呼び出してから、私は単純にタスクを達成するためにasync.seriesを使用します:
私はここで間違っていますか?何か助けてくれてありがとう! :)
明示的にaddNewProjectメソッドを呼び出す理由はありますか?ループや繰り返しのような反復的なプロセスで一度に呼び出すことはできますか?たとえば、追加するプロジェクトが1つまたは2つしかない場合はどうなりますか? –