美文网首页
8 NodeJS笔记

8 NodeJS笔记

作者: brightsunp | 来源:发表于2018-05-03 20:53 被阅读0次

    1 异步编程

    Node采用V8引擎处理JS脚本,最大特点就是单线程运行,一次只能运行一个任务;这导致大量采用异步操作,即任务不马上执行,而是插在任务队列的尾部,等前面的任务运行完再执行。
    约定:回调函数应该是某个函数的最后一个参数;回调函数的第一个参数,是上一步传入的错误对象(没有错误传入null)。原因是传统的try...catch机制对异步操作行不通,只能把错误交给回调函数来处理。

    # 异步
    var task = function(value, callback) {
        if (value === true) {
            callback(null, "Value was true.");
        } else {
            callback(new Error("Value is not true!"));
        }
    };
    
    var callback = function(error, value) {
        if (error) {
            return console.log(error);
        }
        console.log(value);
    };
    
    # 同步
    function main() {
        syncA();
        syncB();
        syncC();
    }
    try {
        main();
    } catch (error) {
        // Deal with exception.
    }
    

    2 异常处理

    Node是单线程运行环境,所以一旦抛出的异常没有被捕获,将会引起整个进程的崩溃。

    2.1 try...catch

    无法捕获异步代码抛出的异常;所以Node在很少的场合使用try/catch语句,比如JSON.parse解析JSON文本。

    2.2 回调函数

    将错误对象作为回调函数的第一个参数,就避免了捕获代码与发生错误不在同一个时间段的问题。

    fs.readFile('./foo.txt', function(err, data) {
        if (err !== null) throw err;
        console.log(data);
    });
    

    2.3 EventEmitter的error事件

    var EventEmitter = require('events').EventEmitter;
    var emitter = new EventEmitter();
    emitter.emit('error', new Error('Something bad happened'));
    # 对error事件部署监听函数
    emitter.on('error', function(err) {
        console.log('Error: ' + err.message);
    });
    

    2.4 uncaughtException和unhandledRejection事件

    以后再整理。

    3 网络操作

    相关文章

      网友评论

          本文标题:8 NodeJS笔记

          本文链接:https://www.haomeiwen.com/subject/hmglrftx.html