繁体   English   中英

带参数和返回值的Javascript回调

[英]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调用时评估xy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM