有没有一种方法可以将带有参数的回调传递到另一个回调中,并且仍然添加更多参数?

时间:2019-11-16 20:30:47

标签: javascript callback

有没有办法做这样的事情?

//in file 1
function foo(val1, callback){
    callback(bar(val1)); //this will through an error
    //callback(bar); is the proper way, but then I'm not passing val1 (and I need to be able to set val2 inside the file 2 callback)
}

function bar(val1, val2){
    console.log(val1, val2);
}

//in file 2
foo('value1', function(bar){
    bar('value2');
});

并拥有该日志:value1 value2

我知道我可以将val1传递到回调中,然后再次以bar(val1, 'value2')的形式传递,但是我想知道是否有一种方法可以自动传递val1而不是手动传递。文件2函数foo将要运行很多,每次我想运行bar()

时不必传递相同的参数将是很好的选择

2 个答案:

答案 0 :(得分:0)

我不是javascript专家,但是我在这里找到了类似的内容:

https://stackoverflow.com/a/13286241/12380678

也许会有所帮助。

如果不是这种情况,或者您已经阅读过,那么抱歉浪费您的时间。

答案 1 :(得分:0)

我认为我发现了here

此答案建议让该函数返回另一个函数。这似乎可行。

//in file 1
function foo(val1, callback){
    callback(bar(val1));
}

function bar(val1){
    return function(val2){
        console.log(val1, val2);
    };
}

//in file 2
foo('value1', function(bar){
    bar('value2');
});

方法2:使用.bind(在同一链接上找到)

//file 1
function foo(val1, callback){
    callback(bar.bind(this, val1));
}

function bar(val1, val2){
    console.log(val1, val2);
}

//file 2
foo('value1', function(bar){
    bar('value2');
});