我正在測試Jake作爲Rake主要的JavaScript項目的替代品。現在我發現奇怪的一件事是完成事件在事件完成之前被觸發。在完成異步任務之前完成Jake任務
下面是一個例子:
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中工作的一些魔力?因爲它似乎在其實際完成執行前以某種方式發射了一個完整的事件。
== ==編輯
只是所以沒有混亂,我使用傑克的版本0.5.16 https://github.com/mde/jake
== EDIT 2 ==
已經發布了另一個例子現在應該以更清晰的方式顯示確切的問題,因爲它似乎與異步任務內的任務有關。
谷歌搜索節點傑克網許多不同,但類似的結果。你可以在github上提供文檔鏈接或存儲庫名稱嗎?你的回調和這樣看起來很合理,假設你正確地使用了庫,特別是addListener,並且像所假設的那樣調用函數。 – ChrisCM
這實際上只是一個簡單的本地jake項目,我在幾個小時前敲了敲。實際項目將打印腳本文件編譯爲javascript,但上面的代碼是一樣的。所以不幸的是沒有github鏈接或任何東西......我確實嘗試了谷歌搜索,但沒有直接相關的帖子和我的問題,大多數是關於如何使用第三方庫做序列構建。一切*似乎*罰款給我,只是不會運行,因爲我會有預期:( – Grofit