专栏首页编程微刊Node.js自学笔记之回调函数

Node.js自学笔记之回调函数

写在前面:如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择。这段时间对node.js进行了简单的学习,在这里谈谈我对node.js的理解 。

node.js作为javascript运行平台,它采用了事件驱动和异步编程的方式,通过事件注册和异步函数,开发人员可以提高资源利用率,服务器的性能也能得到改善。

在网站上参考了一些资料,回调函数的官方定义是:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

阻塞代码实例

创建一个文件 input.txt ,内容如下:

Node.js自学笔记之回调函数

创建 main.js 文件, 代码如下:

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

以上代码执行结果如下:

$ node main.js
Node.js自学笔记之回调函数
程序执行结束!

非阻塞代码实例

创建一个文件 input.txt ,内容如下:

Node.js自学笔记之回调函数

创建 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
程序执行结束!
Node.js自学笔记之回调函数

以上两个实例我们了解了阻塞与非阻塞调用的不同。第一个实例在文件读取完后才执行完程序。 第二个实例我们不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。

Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用。

node.js希望我们再单一进程中使用异步编程,当然这个不是Node.js或者javascript独有的,而是一种风格,例如c#中的Tread,Task,java中的Thread,Runable等都是异步编程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序从零开始开发步骤(七)引入外部js 文件

    王小婷
  • 小程序获取当前日期和时间点的方法

    3:在需要使用的js文件中,导入jsvar util = require('../../utils/util.js'); js:

    王小婷
  • mongodb踩坑-Error: Cannot find module 'mongoose'

    在输入命令npm start启动运行项目的时候,有时候会遇到这样的错误Error: Cannot find module 'mongoose',缺少mongoo...

    王小婷
  • Linux基础之xargs命令的入门实例

    xargs命令有两个要点。第一,你必须列出目标文件。第二,你必须指定对每个文件需要执行的命令或脚本。

    砸漏
  • 通过WebRTC进行实时通信-结合对等连接和信令

    如果您没有从工作目录中关注此codelab,则可能需要安装step-05文件夹或当前工作文件夹的依赖项。从你的工作目录中运行下面的命令:

    音视频_李超
  • smartClient 1--框架介绍

    一、是什么(以下简称SC)     smartClient 是一个基于web技术的开发框架,主要包括: 一个无需安装的 Ajax/HTML5 客户端引擎 UI组...

    用户1148399
  • 前端缓存

    https://juejin.im/post/5a098b5bf265da431a42b227

    城市中的游牧民族
  • Webpack第三天

    我们已经能打包能启动了,现在我们要继续开发。开发的时候我们要一直刷新才能出现,这很浪费时间,而webpack自带了热更新。

    wade
  • 利用js文件反弹shell

    前两天在freebuf上看到一个利用Ink文件触发攻击链的文章,确实佩服作者的脑洞。

    洛米唯熊
  • JavaScript常用对象&属性&事件-图标

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛

扫码关注云+社区

领取腾讯云代金券