gpt4 book ai didi

Node.js:v0.8 中的域模块

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:58 26 4
gpt4 key购买 nike

我想询问有关 Node v0.8 中的新模块“Domain”的问题。

var domain = require('domain');
var EventEmitter = require('events').EventEmitter;

var dm = domain.create();

dm.on('error', function(err) {
console.log('Catch some error: ', err.message);
});

var emitter = new EventEmitter();
emitter.on('test', function() {
throw new Error('Emit an error !');
});
dm.add(emitter);
// emitter.emit('test'); <- This line

dm.run(function() {
setTimeout(function() {
throw new Error('Timeout !');
}, 10);
});

输出:

Catch some error:  Timeout !

如果添加行

emitter.emit('test');

然后输出:

Catch some error:  Emit an error !

所以我的问题是为什么它不输出“捕获一些错误:超时!”添加以上行后?谢谢。

最佳答案

这里的执行根本没有到达dm.run(function() {,您必须在发生任何异常之前向域添加处理程序。

比较

var domain = require('domain');
var EventEmitter = require('events').EventEmitter;

var dm = domain.create();

dm.on('error', function(err) {
console.log('Catch some error: ', err.message);
});

var emitter = new EventEmitter();
emitter.on('test', function() {
throw new Error('Emit an error !');
});
dm.add(emitter);
dm.run(function() {
setTimeout(function() {
throw new Error('Timeout !');
}, 10);
});
emitter.emit('test');

输出:

Catch some error:  Emit an error !
Catch some error: Timeout !

关于Node.js:v0.8 中的域模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237097/

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