当前位置: 首页 > news >正文

nj04---事件回调函数

一、回调函数
        1.异步式读取文件
                var fs=require('fs');
                fs.readFile('file.txt','utf-8',function(err,data){
                    if(err){
                            console.log(err)
                     }else{
                            console.log(data)
                     }
                });
                console.log('end.')//先打印end,再打印内容
            结果:
                end.
                Contents of the file.
           2. 同步式读取文件
               var fs=require('fs'); 
                var data=fs.readFileSync('file.txt','utf-8');//没有回调函数
                console.log(data)
                console.log('end.')
            结果:
                Contents of the file.
                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)事件,执行完毕后再返回事件循环。

 

相关文章:

  • Oracle锁表查询和解锁方法
  • Java 中的事件监听机制
  • sed的使用
  • 第四章 利用函数实现指定的功能
  • Nginx虚拟主机配置实践(一)
  • 硬件设计中,总有一种想法让你冲动
  • Rokid开发者社区skill之【历史上的今天】
  • layer常用方法
  • Cehp-学习1
  • 二极管
  • 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.1.2 构建应用程序...
  • 蔚来汽车李斌:2025年无人驾驶将100%解放驾驶时间
  • eclipse导入项目,项目名出现红叉的情况(修改版)
  • 字符串匹配的BF算法和KMP算法学习
  • Python基础-4
  • angular组件开发
  • Docker 笔记(2):Dockerfile
  • JavaWeb(学习笔记二)
  • js中forEach回调同异步问题
  • Less 日常用法
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL用户中的%到底包不包括localhost?
  • tab.js分享及浏览器兼容性问题汇总
  • Vue学习第二天
  • Xmanager 远程桌面 CentOS 7
  • 七牛云假注销小指南
  • 世界上最简单的无等待算法(getAndIncrement)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #pragam once 和 #ifndef 预编译头
  • #图像处理
  • (9)STL算法之逆转旋转
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第61天)多租户架构(CDB/PDB)
  • (力扣)循环队列的实现与详解(C语言)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转) 深度模型优化性能 调参
  • (转)Sql Server 保留几位小数的两种做法
  • (转)大型网站的系统架构
  • (转载)Linux网络编程入门
  • .form文件_SSM框架文件上传篇
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .Net IOC框架入门之一 Unity
  • .NET框架
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @基于大模型的旅游路线推荐方案
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ NOI 2001 ] 食物链
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [2016.7 test.5] T1
  • [Assignment] C++1
  • [C++]:for循环for(int num : nums)