`

NodeJS Callback

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2352487

 

为什么NodeJS约定回调函数的第一个参数必须是错误对象err(如果没有错误,该参数就是null)?

因为执行分成两段,在这两段之间抛出的错误程序无法捕捉,只能当做参数传入第二段。

 

维基百科上的解释:

In computer programming, a callback is a reference to a piece of executable code that is passed as an argument to other code.

 

jQuery文档的解释:

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 

 

先看一个简单地例子:

function mainFunction(callback) {
	var someGirl = 'A girl who alreay has a boy friend';

	callback(someGirl);
}

mainFunction(function(a) {
	console.log("Hello: ");
	console.log(a);
});

mainFunction(function(b) {
	console.log("World: ");
	console.log(b);
});

Run

Note:

鄙人对上述代码的诠释就是,比如你和你们同事一起去参加年会,舞台上看到一个颜好声甜身材曼妙的姑娘,于是乎,心中的欲望开始泛滥,想迫不及待去找个那个姑娘搭个讪认识一下,加个微信,留个联系方式什么的;但是呢,姑娘还在表演中,你又不立刻行动,只能先定个计划(等表演结束去搭讪她),这个计划就是callback,也就是简简单单的一个函数声明,具体的付诸实践呢,还能等表演结束之后,你去走套路进行搭讪,也就是函数的具体实现(每个人的搭讪方式不同,所以实现的方式也各有不同),最后非常可惜,你和你同事都搭讪失败,这个姑娘已经名花有主了。

 

再来看一个正常一点的例子,找点感觉

var add = function(a, b) {
	return a + b;
};

var substract = function(a, b) {
	return a - b;
};

var multiply = function(a, b) {
	return a * b;
};

var divide = function(a, b) {
	return a / b;
};

var getParams = function(a, b) {
	console.log(a + ":" + b);
	return "200";
};

var calc = function(num1, num2, callback) {
	return callback(num1, num2);
};


console.log(calc(4, 2, add));
console.log(calc(4, 2, substract));
console.log(calc(4, 2, multiply));
console.log(calc(4, 2, divide));

console.log(calc(4, 2, getParams));

// anonymous function
console.log(calc(4, 2, function(a, b) {
	return a * b + a / b;
}));

Run 


 

 

 

  • 大小: 11.4 KB
  • 大小: 8.7 KB
分享到:
评论

相关推荐

    进阶之初探nodeJS

    在”初探nodeJS”随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器。 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法...

    nodejs post 方法发送请求

    使用nodejs的http模块来完成post请求,函数为 http.request(options, callback)#

    nodejs调用建行互联网银企被扫支付接口加密及验签Demo+java封装jar包

    该java源代码将建行互联网银企被扫支付接口java版加密及验签Demo 封装成jar包,方便nodejs调用。 1.将建行Java版加密Demo打包成jar包:CCBParam.jar。并将jar包放到服务器的相应文件夹下。 2.根据订单号、金额、付款...

    Nodejs操作Sqlite3数据库封装

    4. `each(sql, [params], [callback], [complete])`:执行SQL,逐条处理结果,通常用于批量处理数据,如迭代显示结果。 对于封装,我们可以创建一个模块,如`dbUtil.js`,包含一些常用的方法,例如: ```...

    Edge实现NodeJS与.NET互操作(包括UI界面示例)

    Edge 实现 NodeJS 与 .NET 互操作 Edge 是一种在进程内实现 NodeJS 与 .NET 互操作的桥接技术,可以在 NodeJS 里使用 .NET 代码和库,也可以在 .NET 程序里使用 NodeJS 的代码。Edge 运行需要 .NET Framework 4.5,...

    NodeJS Udp 广播和组播

    3. 发送数据到服务器,使用`socket.send(data, port, address[, callback])`方法,其中data是你要发送的数据,port和address是服务器的端口和IP地址。 4. 可以选择设置监听器来处理服务器的响应。 在提供的压缩包...

    Nodejs关于gzip deflate压缩详解.docx

    Nodejs 中的 gzip deflate 压缩详解 Nodejs 中的 gzip deflate 压缩是指在 HTTP 传输过程中对数据进行压缩,以减少数据的体积,提高传输效率。压缩算法有多种,如 gzip、deflate 等。本文将介绍 Nodejs 中关于 ...

    HAP-NodeJS虚拟设备配置及python脚本

    在本文中,我们将深入探讨如何使用HAP-NodeJS创建HomeKit兼容的虚拟设备,并结合树莓派3的GPIO(General Purpose Input/Output)接口,通过Python脚本来控制硬件设备。首先,我们来理解一下HAP-NodeJS的核心概念。 ...

    Nodejs最新API文档

    在"Nodejs最新API文档"中,我们可以找到关于Node.js 4.0版本的所有官方API接口及其用法。这个版本是Node.js发展中的一个重要里程碑,引入了许多改进和新特性,旨在提升性能和稳定性。以下是一些关键的知识点: 1. *...

    nodejs手册中文版

    - **setTimeout(callback, delay, [arg], ...)**:设置一个延时调用的函数,delay 之后执行 callback,并传入 arg 参数。 - **clearTimeout(timeoutId)**:取消由 setTimeout 设置的延时调用。 - **setInterval...

    nodejs-api英文版资料

    - **setTimeout(callback, delay, [arg],[])**: 延迟指定毫秒后执行回调函数。 - **clearTimeout(timeoutId)**: 取消已设置的延时定时器。 - **setInterval(callback, delay, [arg],[])**: 周期性执行回调函数。 - *...

    NodeJS的url截取模块url-extract的使用实例

    NodeJS的`url-extract`模块是一个用于网页截图和URL信息提取的工具,它通过集成PhantomJS提供了高效且方便的API。这个模块解决了在高并发环境下,每次截图操作启动新PhantomJS进程导致的效率问题,通过优化线程管理...

    nodejs发送http请求时遇到404长时间未响应的解决方法.docx

    function httpGetWithTimeoutSupport(url, timeout, callback) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.timeout = timeout; xhr.ontimeout = function() { // 超时处理 }; xhr....

    nodejs手册中文版.pdf

    - setTimeout(callback,delay,[arg],[]):设定一个定时器,将callback函数延迟delay毫秒后执行。 - clearTimeout(timeoutId):取消之前通过setTimeout设置的定时器。 - setInterval(callback,delay,[arg],[]):...

    NodeJS应用开发自测试卷1.docx

    NodeJS 中截取文件的方法是 truncate(filename, len, callback)。 MySQL 数据库操作 MySQL 数据库中,添加数据表中的数据可以使用 INSERT 语句,查询数据可以使用 SELECT 语句,修改数据可以使用 UPDATE 语句,...

    nodejs实战第二季

    - `app.listen(port[, hostname[, backlog[, callback]]])`:监听指定端口和主机地址。 #### 四、Node.js异步编程模式 - **回调函数**:最原始的异步编程方式。 - 示例:`fs.readFile('data.txt', 'utf8', ...

    nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例.docx

    db.sql = function (sql, callBack) { var connection = new mssql.Connection(config, function (err) { if (err) { console.log(err); return; } var ps = new mssql.PreparedStatement(connection); ps....

    NODEjs API文档

    ### NODEjs API文档 #### 概述 本文档旨在为Node.js开发者提供全面且详细的API指南,涵盖了Node.js的核心功能、模块加载机制、全局对象、定时器、核心及文件模块等重要方面。通过深入理解这些内容,开发者可以更加...

    Nodejs实现redis数据Json格式的导出

    function exportAllKeysToRedis(keys, callback) { keys.forEach(async (key) => { const value = await client.get(key); if (value) { // 假设这里有一个将Redis数据转为JSON的函数 const jsonData = ...

    nodejs4.6 。。。。。。

    4. **异步编程改进**:在Node.js 4.6中,Promise的实现更为成熟,这对于处理异步操作提供了更好的方式,避免了回调地狱(Callback Hell)。开发者可以使用async/await语法糖来编写更加清晰的异步代码。 5. **性能...

Global site tag (gtag.js) - Google Analytics