gpt4 book ai didi

node.js - 在 Node 中使用 zone.js 钩子(Hook)

转载 作者:搜寻专家 更新时间:2023-10-31 23:23:58 24 4
gpt4 key购买 nike

我正在尝试使用 angular/zone.js 编写一个简单的演示在 Node 中,但由于某种原因 beforeTaskafterTask 都没有被调用。

这是我正在运行的代码:

require('zone.js');

function foo () {
Zone.current.fork({
name: 'foo_zone',

beforeTask: function () {
console.log('~~~ ZONE START ~~~');
},

afterTask: function () {
console.log('~~~ ZONE END ~~~');
}
})
.run(function () {
console.log('in the zone');
console.log('Zone.current.name', Zone.current.name); // prints foo_zone
setTimeout(() => {
console.log('timeout is up');
}, 1000);
});
}
foo();

现在在区域内一切都打印正常,包括区域名称,但两个 Hook 都没有被调用。

我是否遗漏了 zone.js + node.js 的一些基本知识?

(运行 Node v5.0.0,zone.js 0.6.23)

最佳答案

这是示例存储库。 https://github.com/JiaLiPassion/zone-node

首先,你需要使用最新版本的zone.js并在 nodejs 中使用 zone.js,你应该需要 zone-node.js,以下是运行示例。

require('./zone-node.js');

function log(str) {
Zone.root.run(function() {
console.log(str);
});
}
function foo() {
Zone.current.fork({
name: 'fooZone',
onScheduleTask: function(delegate, curr, target, task) {
log('Zone begin to schedule task not async yet ' + task.source);
return delegate.scheduleTask(target, task);
},
onInvokeTask: function(delegate, curr, target, task, applyThis, applyArgs) {
log('~~~~Zone before invoke async callback~~~~' + task.source);
delegate.invokeTask(target, task, applyThis, applyArgs);
log('~~~~Zone after invoke async callback~~~~' + task.source);
},
}).run(function() {
log('current zone, ' + Zone.current.name);
setTimeout(function() {
log('timeout is up, ', Zone.current.name);
}, 100);
});
};

foo();

在 nodejs 中运行后,输出将是。

current zone, fooZone
Zone begin to schedule task not async yetsetTimeout
~~~~Zone before invoke async callback~~~~setTimeout
timeout is up,
~~~~Zone after invoke async callback~~~~setTimeout

关于node.js - 在 Node 中使用 zone.js 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563213/

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