asyncモジュールを使用して行う方法を考えました。
async.seriesは、非同期タスクを連続して実行するために使用できます。 これが私のやり方です。
function commitFile(arg, callback) {
svnClient.getStatus(filePath, function(err, data) {
//...
svnClient.commit(['Commit msg', filePath], callback);
//...
});
}
var toCommit = [];
for (var i = 0, len = requests.length; i < len; i++) {
//Adding files to commit, async.apply enables adding arguments to the anonymous function
toCommit.push(async.apply(function(arg, cb) {
commitFile(arg, cb);
}, 'arg1'));
}
async.series(toCommit,function (err, result) {
console.log('Final callback');
if(err) {
console.log('error', err);
} else {
console.log('result of this run: ' + result);
}
});
async.seriesには、実行後にコールバックを呼び出す必要がある関数の配列が必要です。コールバックを使用して、実行中の現在の関数が実行され、次に実行する次の関数が選択されることを確認します。