这是我的难题,我有一系列被调用的函数,并且我使用回调函数在完成时执行一个函数。回调函数返回一个值,并且效果很好,我的问题是,当我向回调函数添加参数时,我将无法再访问返回的值。这是一个有效的示例:

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调用时评估ybind

关于javascript - 带参数和返回值的JavaScript回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30875389/

10-12 12:59
查看更多