Christian-health / StudyNote2017

2017年学习笔记
0 stars 0 forks source link

Node Js 高级编程 学习笔记 #41

Closed Christian-health closed 6 years ago

Christian-health commented 6 years ago

第五章

代码1:

util = require('util');
var EventEmitter = require('events').EventEmitter;
// 这是MyClass的构造函数:
var MyClass = function() {
}
util.inherits(MyClass, EventEmitter);

MyClass.prototype.someMethod = function() {
    this.emit("custom event", "argument 1", "argument 2");
};

var myInstance = new MyClass();
myInstance.on('custom event', function(str1, str2) {
    console.log('got a custom event with the str1 %s and str2 %s!', str1, str2);
});

myInstance.someMethod();

代码2

var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {//这个对象只要一被new出来之后,就会在内部有一个定时器,然后每隔1秒钟发射一个tick,所以就会一直打印
    var self = this;
    setInterval(function() {
        self.emit('tick');
    }, 1000);
};
util.inherits(Ticker, EventEmitter);

var ticker = new Ticker();
ticker.on("tick", function() {
    console.log("tick");
});

没看懂的地方: 电子书:57 59页

Christian-health commented 6 years ago

查询和读写文件

var fs = require('fs');
function openAndWriteToSystemLog(writeBuffer, callback){
    fs.open('./my_file', 'a', function opened(err, fd) {
        if (err) { return callback(err); }
        function notifyError(err) {
            fs.close(fd, function() { //如果打开文件发生了异常,那么【关闭文件描述符】
                callback(err);
            });
        }
        var bufferOffset = 0,
        bufferLength = writeBuffer.length,
        filePosition = null;
        fs.write( fd, writeBuffer, bufferOffset, bufferLength, filePosition,
            function wrote(err, written) {
                if (err) { return notifyError(err); }
               fs.close(fd, function() { //如果完成了文件的写入,那么【关闭文件描述符】
                    callback(err);
                });
            }
        );
    });
}
openAndWriteToSystemLog(
    new Buffer('writing this string'),
    function done(err) {
        if (err) {
            console.log("error while opening and writing:", err.message);
            return;
        }
        console.log('All done with no errors');
    }
);
Christian-health commented 6 years ago

8.2.3 节 6.4节 5.4.5节