当前位置: 首页 > 编程笔记 >

node.js回调函数之阻塞调用与非阻塞调用

严信瑞
2023-03-14
本文向大家介绍node.js回调函数之阻塞调用与非阻塞调用,包括了node.js回调函数之阻塞调用与非阻塞调用的使用技巧和注意事项,需要的朋友参考一下

首先,node.js作为javascript运行平台,它采用了事件驱动和异步编程的方式,通过事件注册和异步函数,开发人员可以提高资源利用率,服务器的性能也能得到改善。其次,对于前端人来说,node.js作为js的运行平台,我们可以通过编写系统级或者服务器端的javascript代码交给node.js来执行,让我们前端人也能作用于后台,相比之下,浏览器端的javascript代码在运行时会受到各种安全性的限制,对客户系统的操作有限,而node.js则是一个全面的后台运行时,为javascript提供了许多其他语言能够实现的许多功能。

下面回归正题,首先给大家介绍阻塞调用,具体内容请往下看。

1.阻塞调用(读取完文件再执行后面的操作)

var fs = require("fs");
var data = fs.readFileSync('/fs.txt');
console.log(data.toString());
console.log("程序执行结束!");

输出结果:

“文件内容”

“程序执行结束!”

2.非阻塞调用(读取文件和其他操作同步执行)

var fs = require("fs"); 
fs.readFile('/fs.txt',function(err,data){
if(err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");

输出结果:

“程序执行结束!”

“文件内容”

以上内容是小编给大家介绍的node.js回调函数之阻塞调用与非阻塞调用的全部内容,希望大家喜欢。

 类似资料:
  • 我完全混淆了,,。 哪个是阻塞,哪个不是? 我的意思是如果我使用父进程是否等待子进程返回/才继续执行。 如何影响这些调用?

  • 我正在使用Spring Webflux和Spring Boot2,我的场景如下: 在返回之前,我如何将来自流量和正常产品列表的结果连接起来?没有反应控制器是可能的吗? 附言。我不想对从调用1获得的结果调用。block()和CompleteableFuture

  • 在上一节中,我们看到了 take Effect 让我们可以在一个集中的地方更好地去描述一个非常规的流程。 重温一下登录流程示例: function* loginFlow() { while(true) { yield take('LOGIN') // ... perform the login logic yield take('LOGOUT') // ...

  • 问题内容: 对Node的新手理解是,如果我重新编写同步代码或内联代码以利用函数/回调,则可以确保我的代码是非阻塞的。我很好奇这在事件堆栈方面的工作原理。 是它将阻塞: 虽然这不会: 好的,我知道我们应该使用回调。但是就事件堆栈而言,这为何起作用?Javascript是单线程的。在第一个示例行中,它使用了昂贵且阻塞的I / O操作。第1行完成之前,第2行无法执行。这是因为第2行需要来自第1行的信息吗

  • 我正在使用Spring Webflux和Spring Data MongoDB Reactive。在我的REST控制器中,我试图从数据库(MongoDB)中获取一种类型的所有对象(例如,一个品牌的所有自行车)。我当前的实现看起来是这样的: 为了保持反应模式,我希望避免block()调用。我尝试了map()和doOnSuccess()的多种组合,但没有找到正确的方法来完成我想要做的事情。我在网上找到

  • 问题内容: 我有这段代码可以在Linux中从Serial读取,但是我不知道在读取SerialPort时阻塞和非阻塞之间有什么区别,在哪种情况下哪个更好? 问题答案: 您提到的代码是IMO编码和注释不当的代码。该代码不符合POSIX的可移植性惯例,如正确设置终端模式和POSIX操作系统的串行编程指南中所述。该代码没有提到它使用非规范(也称为原始)模式,并且重用了“阻塞”和“非阻塞”术语来描述 VMI