私は主に JavaScript プロジェクトで Rake の可能な代替品として Jake をテストしています。私が奇妙に感じていることの 1 つは、イベントが完了する前に完了イベントがトリガーされていることです。
次に例を示します。
task('some_task_1', {async: true}, function () {
console.log("|- Doing something");
var execCallback = function() {
console.log(" |- Done something");
complete();
};
setTimeout(execCallback, 2000);
});
task('some_task_2', {async: true}, function () {
console.log("|- Doing something else");
var execCallback = function() {
console.log(" |- Done something else");
complete();
};
setTimeout(execCallback, 2000);
});
task('task_runner', {async: true}, function () {
var firstTask = jake.Task['some_task_1'];
var secondTask = jake.Task['some_task_2'];
firstTask.addListener("complete", function() { secondTask.invoke(); });
secondTask.addListener("complete", function() { complete(); });
firstTask.invoke();
});
task('default', function () {
jake.Task['task_runner'].invoke();
});
出力は次のようになると予想していました。
|- Doing something
|- Done something
|- Doing something else
|- Done something else
ただし、実際に得られるのは次のとおりです。
|- Doing something
|- Doing something else
|- Done something
|- Done something else
では、Jake で async がどのように機能するべきかについて、いくつかの魔法がありますか? 実際にexecを終了する前に、何らかの形で完全なイベントを発生させているようです。
==編集==
混乱がないように、Jake https://github.com/mde/jakeのバージョン 0.5.16 を使用してい ます。
==編集2 ==
非同期のタスク内のタスクに関連しているように見えるため、正確な問題をより明確に示す別の例を投稿しました。