大津です。
実現しようとしていることはドメイン内(d)であるクラスのメンバーが実行され
た時において3つあります。
1.そのメンバーはdisposeの影響を受けないようにしたいです。
2.更にメンバーのcallback関数はドメインd内で実行したいです。
3.また必要に応じてドメインd内にエラーをメンバーから投げ入れたいです
上記要件を私なりにまとめると、
「あるオブジェクトメソッドで実行されるスコープ内のドメインを特定のドメイ
ンに固定したい」
ということであってますか?
いま、1,2の実現のために手元で以下のようなソースを書いています
https://gist.github.com/3056605
このソースですと、callback関数がClassB内で実行されてしまいます。
また、interceptをcallback関数に付加することも考えましたが、
そうしてもClassB内に用意したドメインのdisposeの影響を受けてしまいます。
期待してる出力結果も書いてもらえるとありがたいです。
現状の出力結果:
This is DOMAIN 1.fnA
This is DOMAIN 2.fnB
This is DOMAIN 2.fnA
期待する出力結果:
This is DOMAIN 1.fnA
This is DOMAIN 2.fnB
This is DOMAIN 1.fnA
で、さっき書いた「特定のドメインに固定する」要件だとすると
文字通り Domain.bind() が使えます。このコードの場合、
a.fnA = d.bind(a.fnA);
で再定義してあげると a.fnA() 内で実行されるスコープのアクティブドメイン
は d に固定されます。dB を dispose() しても影響を受けないです。
サンプルコードと出力結果はこれです。
https://gist.github.com/3057252
3. の要件は、必要に応じてメソッドを d にバインドすればいいと思います。