在node.js平台中,由于遵循非阻塞编程模型,因此node.js模块中的大多数功能实际上都是异步的。 这意味着,功能内的代码块将对最终用户几乎没有阻塞,并且不会阻止用户对各种子过程执行不同的操作。
仍然有node.js模块中存在的函数的同步计数器部分。
这是Node.js文件系统模块的同步和异步功能的典型示例。
读取文件的异步功能–
var filesystem = require("fs");
filesystem.readFile("myfirstexample.txt", "utf8", function(error, data) {
console.log(data);
});
在以上函数中,文件系统模块采用文件名并将文件数据作为引用传递给匿名函数的回调处理程序。 然后,该文件系统对象将准备好执行任何其他文件系统操作处理任务。
只要对文件的完全读取完成,回调函数就会将文件的内容记录到控制台。 在这里,应用程序性能不会妨碍系统。
读取文件的同步功能–
var filesystem = require("fs");
var data = filesystem.readFileSync("myfirstexample.txt", "utf8");
console.log(data);
在这里,功能readFileSync将文件中的内容完全读取到内存中,然后在控制台中打印数据。 因此,此处代码块的调用是同步的,并且没有读取完整的内容,因此不会进入下一行。
现在,在活动服务器的情况下,大多数交互将由最终用户完成,第二种操作类型将影响应用程序性能,因为这是一个阻塞代码模型。 由于本质上的非阻塞代码,第一种类型的操作将为用户提供更好的性能。
我们将在以后的文章中讨论node.js编程模型的其他各个方面。 因此,请继续关注并在此处通过node.js功能讨论和有用的链接发表评论。
翻译自: https://www.javacodegeeks.com/2013/12/node-js-synchronous-and-asynchronous-functions.html