0

私は Node.js を初めて使用し、問題のデバッグに問題があります。イベント エミッタとして機能するオブジェクトを作成しましたが、イベントが発生したときにコールバックが呼び出されません。

エミッターを次のように定義しました。

var EventEmitter = require('events').EventEmitter;
var util = require('util');

// this is the object which will inherit from EventEmitter
function RequestStreamReader() {
    EventEmitter.call(this);
}
util.inherits(RequestStreamReader, EventEmitter);
module.exports = RequestStreamReader;

RequestStreamReader.prototype.read = function(req) {
    var data = '';
    req.on('data', function(chunk){
        data += chunk;
    });
    req.on('end', function() {
        this.emit('readComplete', data);
    });
};

このモジュールを使用するコードを以下に示します。「readComplete」イベントのハンドラーは、エミッターで呼び出されたにもかかわらず実行されませんthis.emit(...)(デバッガーでこれを確認しました)。

var Reader = require("../utils/requestStreamReader.js");

var reader = new Reader();
reader.on('readComplete', function(data){
    var userData = JSON.parse(data);
    var newUser = userModule.createFromDto(userData);
    userRepository.create(newUser, onSuccess, onFailure);
});
reader.read(req);

私が間違っているかもしれないことについてのアイデアはありますか?

ありがとう!

4

1 に答える 1