这是我的难题,我有一系列被调用的函数,并且我使用回调函数在完成时执行一个函数。回调函数返回一个值,并且效果很好,我的问题是,当我向回调函数添加参数时,我将无法再访问返回的值。这是一个有效的示例:
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 :(*/
}
我需要一种访问值返回值和参数的方法。这样的事情可能吗?
最佳答案
您将不需要立即调用callback
,而需要创建一个稍后使用所需参数调用callback
的函数:
function myFunc1(x, y) {
/*do stuff*/
myFunc2(z, function(results) {
callback(x, y, results);
});
}
@thefourtheye提出的
.bind()
变体基本上是此函数表达式的快捷方式。1:对于
function(results) { return callback.call(null, x, y, results) }
,它不仅会通过results
传递更多的参数,而且还会在x
调用时评估y
和bind
。关于javascript - 带参数和返回值的JavaScript回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30875389/