読者です 読者をやめる 読者になる 読者になる

process.nextTick()でのDomain対応

https://github.com/joyent/node/blob/master/src/node.js
Node.jsのスタートアップラウンドのコード、その名もnode.js、ですが、こちらにprocess.nextTick()の定義で、特に遅延させた関数のスタックをループで発火させるところとして_tickDomainCallback()というのがあります。

// node.js (v0.10.18)
    function _tickDomainCallback() {
      var tock, callback, domain;

      tickInfo[kInTick] = 1;

      while (tickInfo[kIndex] < tickInfo[kLength]) {
        tock = nextTickQueue[tickInfo[kIndex]++];
        callback = tock.callback;
        domain = tock.domain;
        if (domain) {
          if (domain._disposed) continue;
          domain.enter(); // <- これ!
        }
        tickInfo[kLastThrew] = 1;
        try {
          callback();
          tickInfo[kLastThrew] = 0;
        } finally {
          if (tickInfo[kLastThrew] === 1) tickDone();
        }
        if (domain)
          domain.exit(); // <- これ!
      }

      tickDone();
    }

callback()の前後でがっちりdomain.enter()およびdomain.exit()してますね。