gpt4 book ai didi

javascript - 将参数传递给作为参数传递的回调

转载 作者:行者123 更新时间:2023-11-30 21:15:14 26 4
gpt4 key购买 nike

在下面的代码中:

makeComponent: function(componentBuilder, myLib) {
componentBuilder.build(function(cmpDefinition, status){
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
});
}

我想把内部回调函数放在一个单独的函数中:

callBackFunc: function(myLib) {
return function(cmpDefinition, status) {
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}
}

makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(callBackFuncVar(cmpDefinition, status));
}

此代码不起作用,我需要将 makeComponent 函数更改为以下内容:

makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(function(cmpDefinition, status) {
callBackFuncVar(cmpDefinition, status)
});
}

为什么直接调用 callBackFuncVar 并将参数传递给它,如前所述,不起作用?

已编辑

如果我这样做会怎样:

callBackFunc: function(cmpDefinition, status) {
var myLib = this.myLib;
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}

makeComponent: function(componentBuilder, myLib) {
componentBuilder.build(callBackFunc.bind(this));
}

最佳答案

你应该这样做:

callBackFunc: function(myLib) {
return function(cmpDefinition, status) {
if (status === 'OK') {
myLib.doSomething(cmpDefinition);
}
}
}

makeComponent: function(componentBuilder, myLib) {
var callBackFuncVar = callBackFunc(myLib);
componentBuilder.build(callBackFuncVar);
}

这背后的原因是 componentBuilder.build 在第一个示例中接收一个函数,在第二个示例中接收 callBackFuncVar 的结果,而不是 callBackFuncVar 函数。

关于javascript - 将参数传递给作为参数传递的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45742593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com