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

以下斜め読んだ内容

pseudo translation of useful posts, book reviews, remarks,etc. twitter: feeddict

Nodeで"new process.EventEmitter()"とも"new events.EventEmitter()"とも書ける件

//http://twoism.posterous.com/emitting-events-with-nodejs よりコピペ

// Add the EventEmitter to the object.
Counter.prototype = new process.EventEmitter();

//https://github.com/mikeal/dbemitterよりコピペ
var request = require('request')
  , events = require('events')
  , querystring = require('querystring')
  ;

var createCouchDBEmitter = function (uri) {
  if (uri[uri.length - 1] !== '/') uri += '/'
  var changesStream = new events.EventEmitter();
  changesStream.since = 0;
  
  • nodeのMLで少し話題にのぼる
  • npmの人曰く
    • "new events.EventEmitter();"で
    • eventsモジュール読み込んでnew
    • 公式ページにも書いてる
    • "new process.EventEmitter();"はNodeの内部実装に関係してる
      • この書き方に依存しない方がいい
  • ryan曰く
    • npmの人のいう通り
    • "process.EventEmitter()"はとても古いAPIの残滓
    • processはC言語で書かれたコード上にある
    • 本当はこれを止めたい。/src/node.js上に移行させるべき
    • けど不運にしてできない理由
      • "uncaughtException"イベントのハンドリング
      • これをするためにCの世界にprocessインスタンスが必要
  • ryanのリプライはスレ立てた人がnodeのjsのソースだけ読んでも「process.EventEmitter()」とする理由がわからんかった、と書いてる点へを踏まえてる模様