向javascript回调中添加一个变量
Add a variable to a javascript callback
我正在使用一个必须定义回调函数的库,该库将在特定事件时执行该函数:
// initialize the callback for the library.
// `lib` is the main variable for the library and is defined globally
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: function(settings) { do stuff }
};
lib.reconfigure(libprops);
}
库然后像这样运行回调(我无法控制这一点):
var settings = 'xyz';
libprops.libcallback(settings);
所以很明显,我定义的回调的一个变量输入将是settings
变量。然而,我也想传入一个我自己的变量:
function mycallback(settings, extra_var) {
// do stuff involving settings
// do stuff involving extra_var
}
我如何在initializations()
中定义libprops.libcallback
,以便extra_var
被传递进去,但在其他地方定义了mycallback
函数?我像这样:
function mycallback(settings, extra_var) {
// do stuff involving settings
// do stuff involving extra_var
}
这可能吗?我想在initializations()
之外定义mycallback()
的原因是mycallback()
非常大,在initializations()
内定义它会很混乱。
似乎闭包可以解决这个问题,但是我不太确定如何构造它。下面是一个初步的尝试:
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: (function(settings) {
mycallback(settings, extra_var)
})(extra_var)
};
lib.reconfigure(libprops);
}
你已经有一个闭包,因此你不需要在任何地方传递extra_var
,它已经可以用于你的匿名回调函数,作为extra_var
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: function(settings) {
// do stuff
// you can do stuff with extra_var here too
}
};
lib.reconfigure(libprops);
}
根据评论中的额外信息,只需在匿名回调中调用您的
myfunction
,将extra_vars作为第二个参数传递(或者如果您想要,没关系,这是您的函数)
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: function(settings) {
mycallback(settings, extra_var);
}
};
lib.reconfigure(libprops);
}
可能有另一种使用.bind
的方式-但是,在这样一个简单的场景中不需要这样的体操
是的,闭包可以,但是你不需要"现在"调用这个函数。您可以创建一个引用本地extra_var
的函数并传递它:
function initializations() {
var extra_var = 'pass me into the callback';
var libprops = {
libcallback: function(settings) {
// you can access both settings passed in as a parameter
// and extra_var, referenced locally.
var settingsLocal = settings,
another = extra_var;
}
};
lib.reconfigure(libprops);
}
如果extra_var
有一个固定的值,就完成了。在其他地方,你需要详细说明你的请求。
相关文章:
- 导航到特定事件的另一个变量页面
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 将节点数据分配给另一个变量jstree
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 可以't将sessionStorage设置为Javascript中的一个变量
- 在Flickr API的标签参数中传递一个变量
- 从Jquery函数中获取一个变量
- 为两个ID设置一个变量的正确语法
- 如何将变量值附加到另一个变量
- 通过加载函数发送一个变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- Javascript未在其中一个变量上输出0
- 保留“;这个“;在一个变量中;这个“;使用此变量
- 是否可以在另一个变量中使用未声明的变量
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 如何每秒从一个变量中提取一定次数的javascript/html