趣说Node.js的回调函数

举报
Regan Yue 发表于 2021/10/16 19:52:24 2021/10/16
【摘要】 趣说Node.js的回调函数Node.js异步编程的直接体现就是回调函数,回调函数在完成任务后会被调用,而Node.js使用了大量的回调函数,我觉得是否适合用Node.js来讲回调函数。下面我就来尽力趣讲回调函数吧~什么是回调函数你到网上论坛找资源种子,但是你要找的资源找不到,于是你就在论坛发帖留下邮箱求资源,过几天,有网友找到资源了,于是给你发邮件,然后你就收到了资源种子然后去下载资源。在...

趣说Node.js的回调函数

Node.js异步编程的直接体现就是回调函数,回调函数在完成任务后会被调用,而Node.js使用了大量的回调函数,我觉得是否适合用Node.js来讲回调函数。下面我就来尽力趣讲回调函数吧~

什么是回调函数

你到网上论坛找资源种子,但是你要找的资源找不到,于是你就在论坛发帖留下邮箱求资源,过几天,有网友找到资源了,于是给你发邮件,然后你就收到了资源种子然后去下载资源。在这里,你在论坛留下邮箱就是登记回调函数,你留下的邮箱就是回调函数,有人找到资源然后给你发邮件就是触发了回调函数的并且调用回调函数,你拿到种子然后下载就是响应回调事件。

示例:

function main(info,callback){
    console.log("点赞、评论、转发了没?!")
    callback(info)
}
​
function say(msg){
    console.log(msg)
}
​
main("给了,给了!",say)

这里callback就是回调函数,当然不一定要使用这个名称。在函数体中,先输出一条信息,然后再调用callback函数,(callback)回调函数使用msg作为自己的参数。


回调函数示例

使用Node.js程序读取文件有两种方式。一种是同步操作,只有读取操作结束后才能进行后面的命令,这种方式称为阻塞。另一种方式是异步方式,可以一边读取文件,一边执行其他命令,这种方式又被称为非阻塞。

而非阻塞方式基于回调函数,允许并行执行操作。操作结果会在事件发生时由回调函数处理,因此程序无须等待某个操作的结果就能执行下一步,这样就大大提高了Node.js的性能,使其可以处理大量的并发请求。

举例:

const fs = require("fs")
​
fs.readFile('./foo.txt',function(err,data){
    if(err) return console.error(err)
    console.log(data.toString())
})
​
console.log("Node.js 程序已经执行结束~")

运行结果:

Node.js 程序已经执行结束~
小的们,快给我点赞~

可以发现,在读取文件时,无论文件有无读取完毕,都会执行下面的输出语句。因此会先显示程序已经结束的话语,然后才等待文件读取完毕然后显示文件内容。文件内容作为回调函数的参数data返回,这样就不必等待文件I/O操作完毕再执行代码了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。