我们都知道node.js是单线程的,它又是如何实现异步编程的呢?答案是通过事件回调。
异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
回调函数在完成任务后就会被调用,Node.js使用了大量的回调函数,Node 所有 API 都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。
非阻塞代码实例:
创建test.txt文件,内容如下:
Hello World!!!
创建Main.js文件,代码如下:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString()); }); console.log("程序执行结束!");
测试结果如下:
$ node Main.js 程序执行结束! Hello World !!!
相关推荐
Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是...
Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是...
其单线程、异步的特点使得 Node.js 能够处理大量并发连接,适用于开发高性能的网络应用。 统一的语言:Node.js 使用 JavaScript 作为编程语言,使得前端和后端都能使用同一种语言进行开发,有助于团队协作和代码复用...
Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是...
Node.js 基于 JavaScript 引擎 v8,是单线程的。Node.js 采用了与通常 Web 上的 JavaScript 异步编程的方式来处理会造成阻塞的I/O操作。在 Node.js 中读取文件、访问数据库、网络请求等等都有可能是异步的。对于 ...
节点基础 Node.js简介 什么是Node.js? Node.js是一个开源服务器环境 Node.js是免费的 Node.js可在各种平台(Windows,Linux,Unix,Mac OS X等)上运行 ... Node.js运行单线程,非阻塞,异步编程,这非
让我们从以伪代码编写的朴素单线程服务器开始: // file: single_threaded_server.psuedo while ( true ) { // Blocking listen on some port for a request listen (localhost: 8080 ) // Accept the ...
2.事件驱动、异步式I/O的编程模式(单线程)是其核心。 3.node.js的javascript引擎是v8,来自google chrome项目。V8号称是目前世界上最快的javascript引擎。 4.node.js内建了http服务器支持,也就是说你可以轻而易举...
事件驱动Node.js使用带有事件循环的单线程模型,这就是为什么要强制采用异步编程风格的原因。阻塞与非阻塞 不好 :prohibited: // Blockingconst fs = require ( 'fs' ) ;const data = fs . readFileSync ( '/
Node.js 的卖点是「异步单线程」,虽然主流 Web 后端编程语言中,对异步编程有很好支持的语言并不少,但只有 Node.js 丧心病狂地将所有 IO 强制异步进行。
node.js中与生俱来的单线程编程、回调函数异步式风格让我们有时喜有时忧。先说单线程,很多人会费解于node.js的单线程如何能做到高并发?这个问题不是本文重点,点到为止。澄清一点,node.js的单线程仅仅指...
Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是...
“异步”这个名词的大规模流行是在Web 2.0浪潮中,它伴随着...Node.js是首个将异步作为主要编程方式和设计理念的平台,伴随着异步I/O的还有事件驱动和单线程,它们构成Node的基调。本文将介绍Node是如何实现异步I/O的。
要理解,你需要了解 JavaScript,node.js 是什么,事件循环(单线程)在其中是如何工作的,并且有异步编程的经验。 所有材料都按编号排序(推荐的母带顺序),并且它们本身包含所有必要的注释。示范令0x - 同步和...
node.js是基于单线程无阻塞异步式的I/O,异步式的I/O指的是当遇到I/O操作的时候,线程不阻塞而是进行下面的操作,那么I/O操作完成之后,线程时如何知道该操作完成的呢? 当操作完成耗时的I/O操作之后,会以事件的...
“单线程”和“无阻塞”是JavaScript的天性,因此任何需要“耗时”的操作,例如等待、网络通信、磁盘IO都只能提供“异步”的编程接口。尽管这对服务器的伸缩性和客户端的响应能力都大有脾益,但是异步接口在使用上要...
JavaScript是一门单线程语言,因此一旦有某个API阻塞了当前线程,就相当于阻塞了整个程序,所以“异步”在JavaScript编程中占有很重要的地位。异步编程对程序执行效果的好处这里就不多谈了,但是异步编程对于开发者...