[英]Javascript Callback with Parameters and Return Value
这是我的困境,我有一系列被调用的函数,我正在使用回调来完成一个函数。 回调返回一个值,这也很有效,我的问题是当我向回调添加参数时,我无法再访问返回的值。 这是一个有效的例子:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, callback);
}
function callback(results) {
alert(results); /*this works!*/
}
这很好用,显示返回的结果。 我的问题是我需要做的是这样的:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, callback(x,y));
}
function callback(x,y,results) {
alert(x); /*works!*/
alert(y); /*works!*/
alert(results); /*doesn't work :(*/
}
我需要一种方法来访问值返回以及我的参数。 这样的事可能吗?
您可以像这样使用Function.prototype.bind
myFunc2(z, callback.bind(null, x, y));
bind
函数将返回一个新函数,第一个参数作为上下文,下一个参数是callback
时传递给callback
的实际参数。
您将不需要立即调用callback
,而是创建一个稍后使用预期参数调用callback
的函数:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, function(results) {
callback(x, y, results);
});
}
@thefourtheye提出的.bind()
变体基本上是1这个函数表达式的快捷方式。
1:而不是function(results) { return callback.call(null, x, y, results) }
,它也会传递更多的参数而不仅仅是results
,它会在bind
调用时评估x
和y
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.