nodejs基础 -- 回调函数

Node.js 异步编程的直接体现就是回调。

异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。

例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

阻塞代码实例

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

i have a dream

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

阻塞代码实例

复制代码

var fs = require("fs");

var data = fs.readFileSync(‘input.txt‘); //注:同步版的 fs.readFile()

console.log(data.toString());

console.log("程序执行结束!");

以上代码执行结果如下:

非阻塞代码实例

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

i have a dream

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

复制代码

var fs = require("fs");

fs.readFile(‘input.txt‘, function (err, data) { //注:异步版的 fs.readFile()

if (err) return console.error(err);

console.log(data.toString());

});

console.log("程序执行结束!");

复制代码

以上代码执行结果如下:

总结:

以上两个实例我们了解了阻塞与非阻塞调用的不同。

第一个实例在文件读取完后才执行完程序。

第二个实例我们呢不需要等待文件读取完,这样就可以在读取文件时同时执行接下来的代码,大大提高了程序的性能。

因此,阻塞按是按顺序执行的,而非阻塞是不需要按顺序的,所以如果需要处理回调函数的参数,我们就需要写在回调函数内。

时间: 2025-01-05 14:43:31

nodejs基础 -- 回调函数的相关文章

nodejs基础 -- 回调

Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数. 例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回.这样在执行代码时就没有阻塞或等待文件 I/O 操作.这就大大提高了 Node.js 的性能,可以处理大量的并发请求. 阻塞代码实例 1.创建一个文件 input.txt ,内容如下:

回调函数及其理解

最近在学习NodeJS的时候看到了NodeJS的回调函数,以前也听过,仔细一想发现自己根本就不知道回调具体是什么,于是决定百度弄清楚,我的理解如下: 1.回调函数是什么? 打个比方,当你写了两个窗体程序,通过一个窗体1打开另外一个独立的窗体2,需要通过窗体2来操作窗体1的时候,怎么办?封装使得窗体2 的类是不可以访问到窗体1中的元素和方法的,所以可以在创建窗体2的时候将窗体1的一个指针(这里只是一个说法,传一个自己的代表过去)传给窗体2作为参数,这样窗体2就可以利用该指针来操作窗体1了. 2.回

nodejs中处理回调函数的异常

假设是使用nodejs+express3这个经典的组合.那么有一种非常方面的处理回调函数异常的方法: 1. 安装模块:express-domain-middleware 2. 增加例如以下的代码: app.use(require('express-domain-middleware')); app.use(function errorHandler(err, req, res, next) { logger.error('error on request %d %s %s: %j', proce

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总

一.button回调 1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性. auto itemNor = Sprite::create("CloseNormal.png"); auto menuItem = MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this msg."); }); auto menu =

那么今天的内容是 callback 回调函数的使用和 基础

还是先贴代码吧 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> </head> <style> body{font-family: "微软雅黑";width: 980

python基础:key回调函数--max(list,key=None)

key回调函数: max(list,key=None) max(range(10),key=lambda x: x > 3)   #4 解释:key=(False,False,False,False,True,..) key中max值的第一项为4对应的True,所以返回4 max('za', 'bf', key=lambda x: x[0])   #za 解释:key=('z','b'),max(key)='z',对应za 说点有用的(使用key): max([('tom',12),('tony

从零开始学_JavaScript_系列(四)——jquery(基础,选择器,触发条件,动画,回调函数)

jQuery语法 (1)引用jquery文件及下载库: http://jquery.com/download/ 下载 Download the compressed, production jQuery 2.2.2 这个是用户版的,已经被精简和压缩. 然后使用 <script src="jquery.js"></script> 来启动这个库文件,记得将下载的文件重命名为jquery.js 也可以使用谷歌和微软的CDN,不过这里略. (2)jQuery语法 $ (

nodejs回调函数

阻塞代码实例: main.js var fs=require("fs"); var data=fs.readFileSync("1.txt"); console.log(data.toString()); console.log("程序执行结束"); 非阻塞代码实例: main.js var fs=require("fs"); fs.readFile("1.txt",function(err,data){