2015-01-27 2 views
1

entered과 관련하여 exit 도메인을 비동기 적으로 가능합니까? 나는 "외부"도메인이 활성화 될 것으로 예상하는 반면, 활성 도메인이 없기 때문에비동기 적으로 노드 도메인을 종료하는 데 문제가 발생했습니다.

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'); 
    }); 
}); 

두 번째 주장은 실패 :이 성공할 것으로 예상하기 때문에 도메인 내 "스택"정신 모델은 분명히 부족하다.

이것이 실패한 이유에 대해 알고 싶습니다. 전체 도메인 "스택"에 대한 지식 없이도

내가 setImmediate 전화

, 익명 함수는 활성 도메인에 바인딩 :

답변

1

가 좋아 나는 도메인이 어떻게 작동하는지 내 정신 모델을 강해졌다 생각합니다.

그래서 비동기식 갭을 넘으면 도메인 "스택"이 손실되고 활성 도메인 만 남아 있습니다.

+0

확실치 않습니다 ... 도메인 스택이 글로벌 공간에 저장되어 있다고 생각합니다. –