gpt4 book ai didi

javascript - Jake 任务在异步任务完成之前完成

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:01 24 4
gpt4 key购买 nike

我正在一个主要是 javascript 的项目上测试 Jake 作为 Rake 的可能替代品。现在我发现奇怪的一件事是完成事件在事件完成之前被触发。

这是一个例子:

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 中的工作方式是否有一些魔力呢?因为它似乎在实际完成执行之前以某种方式触发了一个完整的事件。

==编辑==

为了避免混淆,我使用的是 Jake 0.5.16 版本 https://github.com/mde/jake

==编辑2==

已经发布了另一个示例,现在应该以更清晰的方式显示确切的问题,因为它似乎与异步任务中的任务相关。

最佳答案

Node 0.8 到 0.10 之间似乎存在行为变化(不确定是错误还是功能)。在 0.8.14 中顺序执行的 Jake 任务(使用 async:true)似乎在 0.10.x 中开始同时运行

尝试卸载 Node 0.10,然后安装 0.8。

关于javascript - Jake 任务在异步任务完成之前完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17426352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com