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 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值