exit
是否可以entered
字段异步var Domain = require('domain');
var assert = require('assert');
var outerDomain = Domain.create();
outerDomain.name = 'outer';
outerDomain.run(function() {
var innerDomain = Domain.create();
innerDomain.name = 'inner';
innerDomain.enter();
setImmediate(function() {
assert.strictEqual(process.domain.name, 'inner');
process.domain.exit();
// This assertion is failing because process.domain is undefined!
assert.strictEqual(process.domain.name, 'outer');
});
});
?我的“堆栈”域名心理模型显然不够,因为我预计这会成功:
{{1}}
第二个断言失败,因为没有活动域,而我希望“外部”域是活动的。
我很欣赏对其失败原因的理解。
答案 0 :(得分:1)
好的,我认为我支持了域名运作的心理模型:
当我调用setImmediate
时,匿名函数仅绑定到活动域,而不知道整个域“堆栈”。
因此,一旦跨越异步间隙,域“堆栈”就会丢失,只剩下活动域。