欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs-REPL/回调函数/事件循环

发布时间:2025/6/17 编程问答 10 豆豆
生活随笔 收集整理的这篇文章主要介绍了 nodejs-REPL/回调函数/事件循环 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
REPL 回调函数 事件循环REPL----------------------------------------------------- Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。 REPL可以执行如下任务{读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。执行 - 执行输入的数据结构打印 - 输出结果循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。 }简单的表达式运算 > 1 + ( 2 * 3 ) - 4 使用变量 > var y = 10 多行表达式{> var x = 0undefined> do {... x++;... console.log("x: " + x);... } while ( x < 5 ); }下划线(_)变量 你可以使用下划线(_)获取上一个表达式的运算结果:{$ node> var x = 10undefined> var y = 20undefined> x + y30> var sum = _undefined> console.log(sum)30undefined> }REPL 命令{ctrl + c - 退出当前终端。ctrl + c 按下两次 - 退出 Node REPL。ctrl + d - 退出 Node REPL.向上/向下 键 - 查看输入的历史命令tab 键 - 列出当前命令.help - 列出使用命令.break - 退出多行表达式.clear - 退出多行表达式.save filename - 保存当前的 Node REPL 会话到指定文件.load filename - 载入当前 Node REPL 会话的文件内容 }回调函数----------------------------------------------------- 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 回调函数一般作为函数的最后一个参数出现 function foo1(name, age, callback) { } function foo2(value, callback1, callback2) { }----阻塞代码实例 创建文件input.txt内容是{inputmessage } 然后创建main.js 内容是{var fs = require("fs");var data = fs.readFileSync('input.txt'); //synchronization 同步console.log(data.toString());console.log("程序执行结束!"); } 输出{inputmessage程序执行结束! }----非阻塞代码实例创建文件input.txt内容和上面一样。然后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("程序执行结束!"); } 输出{程序执行结束inputmessage}事件循环-----------------------------------------------------Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。Node.js 几乎每一个 API 都是支持回调函数的。Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:// 引入 events 模块var events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();// 创建事件处理程序var connectHandler = function connected() {console.log('连接成功。');// 触发 data_received 事件eventEmitter.emit('data_received');}// 绑定 connection 事件处理程序eventEmitter.on('connection', connectHandler);// 使用匿名函数绑定 data_received 事件eventEmitter.on('data_received', function(){console.log('数据接收成功。');});// 触发 connection 事件eventEmitter.emit('connection');console.log("程序执行完毕。"); 执行结果{连接成功。数据接收成功。程序执行完毕。 }Node 应用程序是如何工作的?{在 Node 应用程序中,执行异步操作的函数将回调函数作为最后一个参数, 回调函数接收错误对象作为第一个参数。input.txt{inputmessage}var fs = require("fs");fs.readFile('input.txt', function (err, data) {if (err){console.log(err.stack);return;}console.log(data.toString());});console.log("程序执行完毕");执行结果{程序执行完毕inputmessage}删除input.txt让他报错,执行结果是这样的{程序执行完毕Error: ENOENT: no such file or directory, open 'C:\Users\Administrator\Desktop\S\input.txt'} }

 

总结

以上是生活随笔为你收集整理的nodejs-REPL/回调函数/事件循环的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。