• 【第三节 回调函数和事件】


    一、回调函数
            1.异步式读取文件:
        ⑴ nodejs文件下,新建一个txt文件,和一个js文件:
     
        

        ⑵ txt 和 js文件内容如下:

        
          --------------------------------------------------------------------------------------------------------
        
        
                      ★★★★★:
            readFile()是fs中的一个方法——“读取文件”,它里面的三个参数意义分别为“文件名”,“编码方式”,“回调函数”。
            fs.readFile()调用后所做的工作只是将异步I/O请求发送给了操作系统,然后立即返回并执行后面的操作,执行完以后进入循环监听时间,当fs接受到I/O请求完成时间时,时间循环会主动调用回调函数以完成后续工作。
     
        ⑶ 结果如图,读取成功:
     
                   
               2. 同步式读取文件,讲file.js内容替换为如下(或者新建一个js文件):
                   var fs=require('fs');
                    var data=fs.readFileSync('file.txt','utf-8');
                    console.log(data)
                    console.log('end.')
                结果:
                 

        ★★★★★:

          由图可看出它们各自输出的顺序,来比较异步和同步读取的不同之处。

               3.分析:
                    调用时所做的工作知识将异步式IO请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件,当fs接受到IO请求完成的事件时,事件循环会主动调用回调函数完成后续工作。同步则是阻塞等待完成后,继续执行。
     
    二、事件
                1.普通事件的使用
                        //声明事件对象`
                        var EventEmitter=require('events').EventEmitter;
                        var event=new EventEmitter();
     
                        //注册事件
                         event.on('some_event',function(){
                            console.log('我是一个自定义的事件');
                        });
                        //触发事件
                        setTimeout(function(){
                            event.emit('some_event');
                        },1000);
          
         
                2.Node.js的事件循环机制
                    (1)Node.js在什么时候进入事件循环呢?
                            答案是Node.js程序是由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数。
                    (2)如何使用自定义事件呢?
                            事件的回调函数在执行的过程中,可能会发出IO请求或直接发射(emit)事件,执行完毕后再返回事件循环。
  • 相关阅读:
    (转)[Android实例] 关于使用ContentObserver监听不到删除短信会话的解决方案
    (转)Android 使用com.j256.ormlite
    Android中判断网络连接是否可用及监控网络状态
    2018/11/12-操作系统课笔记
    mysql的ONLY_FULL_GROUP_BY语义 --转自http://www.wtoutiao.com/p/19dh3ec.html
    nginx相关配置说明
    为重负网络优化 Nginx 和 Node.js --引用自https://linux.cn/article-1314-1.html
    windows环境下局域网内无法访问apache站点
    27个知名企业品牌VI视觉识别系统规范手册
    TopShelf&Quartz.Net实现多任务的值守
  • 原文地址:https://www.cnblogs.com/lizeren/p/7799082.html
Copyright © 2020-2023  润新知