原创转载请注明出处: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
相关推荐
使用nodejs的http模块来完成post请求,函数为 http.request(options, callback)#
该java源代码将建行互联网银企被扫支付接口java版加密及验签Demo 封装成jar包,方便nodejs调用。 1.将建行Java版加密Demo打包成jar包:CCBParam.jar。并将jar包放到服务器的相应文件夹下。 2.根据订单号、金额、付款...
转化回调函数成简介把转化callback回调方式为Promise方式预转化nodejs内置的, , , 及 部分方法抄, 没有什么新意, 只是喜欢自己的写法而已除了mz之外, 另提供转换函数直接使用使用方法转换方法var callback2Promise =...
2 JavaScript 與 NodeJS 11 2.1 Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Scope 與 Closure . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Callback . . . ...
nodejs手册中文版.pdf Synopsis 概要 Global Objects 全局对象 o global o process o require() o require.resolve() o require.paths o __filename o __dirname o module Timers 定时器 o setTimeout...
nodejs框架类库很多,“流程控制”本来是件比较简单的事,但是对于nodejs的异步架构的实现方法,对于需要同步的业务逻辑,实现起来比较麻烦。 async的集合控制: async.map(arr, function(item, callback){},...
alidns-nodejsAPI调用install 安装npm i alidns-nodejs --saveuse 使用请查看 demo.jsimport ALIDNS from "alidns-nodejs";var client = ALIDNS({ accesskeyId: 'your accesskeyId', accesskeySecret: 'your ...
mongoDB-acl-nodejs 一个非常简单的Acl模块,用于在应用程序内存和MongoDB中使用的NodeJS 我创建此模块是因为我需要使用MongoDB的非常简单的Acl模块功能说明Acl.init(选项,回调) -options :对象用于连接到您的...
使用nodejs的http模块来完成post请求,函数为 http.request(options, callback)#
Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用。在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O的操作结果基本上都需要在回调函数中...
我在网上了解了一下nodejs中sleep功能,搜索了很多关于nodejs中sleep功能介绍,下面我来记录一下,有需要了解的朋友可参考。希望此文章对各位有所帮助。 一 背景 在使用nodejs爬虫的时候,经常会遇到别人的网站对频率...
本文实例讲述了nodejs判断文件、文件夹是否存在及删除的方法。分享给大家供大家参考,具体如下: 判断文件、文件夹是否存在 需要使用nodejs的fs模块 引入 var fs= require("fs") 判断的方法 fs.exists(path, ...
nodejs fs 命令相关文件操作。 nodejs 操作文件以及文件夹。 /** * @description: 同步读取 * @param {string} 文件地址 */ readFileSync(src) ...readFile(src, callback = json => json) ………
NodeJS被打上了单线程、非阻塞、事件驱动…..等标签。 在单线程的情况下,是无法开启子线程的。经过了很久的研究,发现并没有thread函数!!!但是有时候,我们确实需要“多线程”处理事务。nodeJS有两个很基础的api...
本文为大家分享了nodejs个人博客开发的数据模型,具体内容如下 数据库模型 /model/db.js 数据库操作类,完成链接数据库和数据库的增删查改 查询表 /*查询*/ select:function(tableName,callback,where,field){ ...
在”初探nodeJS”随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器。 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法...
目前腾讯云短信为客户提供国内短信、国内语音和海外短信三大服务,腾讯云短信SDK支持以下操作
JS的安全性问题,就决定了JS想要取操作数据库操作文件是不可实现的,而Nodejs作为服务端的JS,如果依然不能操作文件,那么又如何称之为服务端语言呢,所以在Nodejs中,提供了一个fs(File System)模块,以实现文件...
前端开源库-callback2promisecallback2promise,将nodejs样式的回调函数转换为promise
sqlite3是一个专为nodejs设计的,在nodejs上面生态更健壮,因此最终选择sqlite3。 sqlite3几乎支持所有版本的nodejs,同时也可以和nwjs集成。 安装 基于npm安装 npm install sqlite3 这样除了安装完sqlite3的npm...