我找到了一個創建事件發射器類的示例,它接收一個流(tcp網絡連接)並從它從該流中拉出的數據事件中發出它自己的自定義事件。節點事件發射器 - 如何將類轉換爲類語法
無論我做什麼,我都不能重拍它,將es6類語法。我在節點文檔中看到這應該是可能的。但是我有一個很弱的面向對象的背景,我無法讓這個東西工作。
我相信有人可以很容易地弄清楚壽。原來這裏是類(用於擴展ES5風格的構造函數/ util的模塊...)
const MsgClient = function(stream) {
events.EventEmitter.call(this);
let self = this, buffer = "";
stream.on("data", (data) => {
buffer += data;
let boundary = buffer.indexOf("\n");
while (boundary !== -1) {
let input = buffer.substr(0, boundary);
self.emit("message", JSON.parse(input));
buffer = buffer.substr(boundary + 1);
boundary = buffer.indexOf("\n");
}
})
}
util.inherits(MsgClient, EventEmitter); // from require("events").EventEmitter
在我幼稚我已經試過以下,但我沒有背景不會迷路時不起作用。如果你不使用它「這個」變得非常令人費解......
class MsgClient extends EventEmitter {
constructor(stream) {
super();
this.stream = stream;
this.buffer = "";
self = this;
}
stream.on("data", (data) => {
buffer += data;
let boundary = buffer.indexOf("\n");
while (boundary !== -1) {
let input = buffer.substr(0, boundary);
self.emit("message", JSON.parse(input));
buffer = buffer.substr(boundary + 1);
boundary = buffer.indexOf("\n");
}
})
};
如果有人可以幫助甚至點我這將是非常讚賞的寫入方向。
爲什麼「他可能想要」這樣做?這甚至沒有編譯。 – lilezek
@lilezek是的,我犯了語法錯誤。我想這是因爲OP想要使用ES 6的語法,並提到了面向對象的編程 –
是的,但是爲什麼他想要一個額外的函數,它只在構造函數中使用,並且由於內存使用限制而增加'this'? – lilezek