Javascript 带有参数和 Return 值的回调
Javascript Callback with Parameters and Return Value
这是我的困境,我有一系列被调用的函数,我正在使用回调函数在它们完成时执行函数。回调 return 是一个值,而且效果很好,我的问题是当我向回调添加参数时,我无法再访问 returned 值。这是一个有效的例子:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, callback);
}
function callback(results) {
alert(results); /*this works!*/
}
效果很好,显示了 returned 的结果。我的问题是我需要做的是这样的:
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 :(*/
}
我需要一种方法来访问值 return 以及我的参数。这样的事情可能吗??
你可以像这样使用Function.prototype.bind
myFunc2(z, callback.bind(null, x, y));
bind
函数将 return 一个新函数,第一个参数作为上下文,下一个参数是调用时传递给 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
更多的参数,并且它会评估 x
和 y
在 bind
调用时。
这是我的困境,我有一系列被调用的函数,我正在使用回调函数在它们完成时执行函数。回调 return 是一个值,而且效果很好,我的问题是当我向回调添加参数时,我无法再访问 returned 值。这是一个有效的例子:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, callback);
}
function callback(results) {
alert(results); /*this works!*/
}
效果很好,显示了 returned 的结果。我的问题是我需要做的是这样的:
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 :(*/
}
我需要一种方法来访问值 return 以及我的参数。这样的事情可能吗??
你可以像这样使用Function.prototype.bind
myFunc2(z, callback.bind(null, x, y));
bind
函数将 return 一个新函数,第一个参数作为上下文,下一个参数是调用时传递给 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
更多的参数,并且它会评估 x
和 y
在 bind
调用时。