文档详情

《Web应用开发实战》课件——单元3 文件系统操作.pptx

发布:2025-02-04约1.53万字共84页下载文档
文本预览下载声明

3.1回调函数

引入酒店提供就餐服务用户选择就餐的方式库函数回调函数

目录01阻塞02非阻塞

回调函数回调函数应用。准备input.txt文件01我们正在学习Node.js!1.require调用文件模块2.readFile()异步读取文件,最后一个参数为回调函数,内部存在err表示错误信息,data为返回值参数思考:这两条语句,谁先输出?创建main.js-异步读取input.txt02varfs=require(fs);fs.readFile(input.txt,function(err,data){if(err)returnconsole.error(err);console.log(data.toString());});console.log(程序执行结束!);示例

阻塞0102单线程执行程序Node.js与单线程阻塞时,在调用结果返回前,当前线程会被挂起,调用会一直等待数据就绪再返回。非阻塞02单线程在程序执行时,程序执行路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。阻塞与非阻塞非阻塞是不需要按顺序执行的,非阻塞调用不能立刻得到结果,无论在什么情况下都会立即返回,该调用不会阻塞当前线程。

阻塞!DOCTYPEhtmlhtmlheadmetacharset=utf-8title阻塞测试/title/headbody/bodyscriptalert(我是一个同步阻塞,当我未关闭的时候,后面的代码都不会被执行!’);console.log(我们都是新时代幸福的人!);/script/html该对话框不关闭,下面的代码将不会被执行阻塞方式执行程序。示例

非阻塞引入非阻塞并不能中断我吃饭

非阻塞!DOCTYPEhtmlhtmlheadmetacharset=utf-8title非阻塞测试/title/headbody/bodyscriptvarimg=newImage();callback=function(w,h){console.log(w,h);};创建一个Image对象,就会生成一个img标签非阻塞方式执行程序。示例

非阻塞img.onload=function(){if(plete){callback(img.width,img.height);}callback(img.width,img.height);document.body.appendChild(img);};img.addEventListener(click,function(){console.log(您单击我了!);})img.src=./pic.jpg;/script/html如果图片加载完成后将调用callback函数将img标签添加到body中对img对象(实际上就是img标签)进行click事件监听为img对象添加属性示例

回调程序callback(){}阻塞与非阻塞小结

3.2异步编程

同步如果每件事情按照顺序依次进行就是同步。起床—看报—吃早餐—上学

异步如果多件事情可以同时进行即异步。起床—看报—边吃早餐,边去上学带着早饭去上学

引入如何处理异步编程呢?应用程序准备数据数据就绪拷贝数据内核readread返回回调异步selectselect…readread返回应用程序查询数据状态阻塞准备数据数据就绪拷贝数据内核同步

目录01事件发布/订阅模式02Promise/Deferred模式

事件发布/订阅模式2.EventEmitter类Node.js有多个内置的事件,可以通过引入events模块,并通过实例化EventEmitter类来绑定和监听事件。首先,通过require加载events模块。然后,通过下列语句来实例化一个对象:vareventEmitter=newevents.EventEmitter();最后,调用对象的一系列方法来处理事件。1.事件驱动当We

显示全部
相似文档