0
나는 nodejs와 xml2js 모듈을 사용합니다. 나는 XML 파일을 읽으며 xml이 json 객체로 변환 된 후 이벤트를 내보내려고한다. 내 코드는 다음과 같습니다nodejs에서 콜백 함수에 범위를 전달하는 방법은 무엇입니까?
var fs = require('fs'),
util = require('util'),
events = require('events'),
xml2js = require('xml2js');
var CIRCUITMODELSFILENAME = "ControlCircuitModels.xml";
var CIRCUITPARTMODELSFILENAME = "ControlCircuitParts.xml";
var circuitModels, circuitPartModels;
function ModelController() {
if (false === (this instanceof ModelController)) {
return new ModelController();
}
events.EventEmitter.call(this);
};
util.inherits(ModelController, events.EventEmitter);
ModelController.prototype.load = function (baseDir) {
var parser = new xml2js.Parser({
normalize: true,
trim: true,
explicitArray: false
});
fs.readFile(baseDir + "/" + CIRCUITMODELSFILENAME, function (err, data) {
parser.parseString(data, function (err, result) {
circuitModels = result;
console.log('circuit models loaded');
parser.reset();
fs.readFile(baseDir + "/" + CIRCUITPARTMODELSFILENAME, function (err, data) {
parser.parseString(data, function (err, result) {
circuitPartModels = result;
console.log('circuit part models loaded');
moduleReady = true;
this.emit("modelsloaded", null);
});
});
});
});
};
// public interface
exports.ModelController = ModelController;
문제는 범위 방출 이벤트가 손실된다는 점이다.
this.emit("modelsloaded", null);
EventEmitter의 이미 트를 상속받지 않았습니다.
어떻게 범위를 parser.parseString 함수에 전달할 수 있습니까?
감사 크리스