• Node回调&事件


    Node回调&事件

    Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现

    简介

    回调函数在任务完成后会被调用,node的所有API都支持回调函数,回调函数提高了Node的性能,可以处理大量的并发请求

    举例

    var fs = require("fs");
    // 同步读取
    var data = fs.readFileSync("input.txt");
    console.log(data.toString());
    console.log("同步读取");
    
    // 异步读取
    fs.readFile("input.txt",function (err,data) {
        if(err)
            return console.error(err);
        console.log(data.toString());
    });
    console.log("异步读取");
    
    /*输出*/
    hello world!
    同步读取
    异步读取
    hello world!
    

    事件循环

    node使用事件驱动的模型,主循环监听事件,当检测到事件时触发回调函数

    //引入events模块
    var events = require("events");
    //创建eventEmitter对象
    var eventEmitter = new events.EventEmitter();
    
    //创建事件处理程序
    var connectHandler = function () {
        console.log("连接成功");
        //触发receive事件
        eventEmitter.emit('received');
    };
    
    //绑定connection事件处理程序
    eventEmitter.on("connection",connectHandler);
    
    //用匿名函数创建事件
    eventEmitter.on("received",function () {
        console.log("数据接收成功");
    });
    
    // 触发 connection 事件
    eventEmitter.emit('connection');
    console.log("程序执行完毕");
    
    /*输出*/
    连接成功
    数据接收成功
    程序执行完毕
    

    EventEmitter

    Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。所有这些产生事件的对象都是 events.EventEmitter的实例

    //引入events模块
    var events = require("events");
    //创建eventEmitter对象
    var eventEmitter = new events.EventEmitter();
    
    eventEmitter.on('event',function () {
        console.log('listener1 触发');
    });
    
    // 同一个事件可以绑定多个函数
    eventEmitter.on('event',function () {
        console.log('listener2 触发');
    });
    
    var listener3 = function () {
        console.log("listener3 触发");
    };
    // 也可以手动添加
    eventEmitter.addListener('event',listener3);
    
    setTimeout(function () {
        eventEmitter.emit('event');
    },1000);
    
  • 相关阅读:
    Tomcat原理与实践
    Spring Boot入门与实践
    Docker安装及使用
    JDK源码解析——集合(一)数组 ArrayList
    浅谈mysql底层索引
    微信小程序全局配置知识点
    uniapp全屏高度
    npm node-sass报错
    微信小程序接口配置问题
    微信小程序的设计流程
  • 原文地址:https://www.cnblogs.com/fanghao/p/7812777.html
Copyright © 2020-2023  润新知