我真的不知道如何形容,但我会尽力解释。
我希望能够调用func1()
和func2()
,但要在模块中通过handler()
。
我想要这样一种方式:调用module.exported1("foo")
会调用handler(func1, "foo")
,然后调用func1("foo")
。我遇到的问题是,如果我将'exported1'导出为handler(func1)
,我将无法传递任何被调用export1的参数(据我所知)。有解决方法吗?
注意:这是一个模块,我需要将其导出,而用户无需向func1
提供func2
和handler()
。
function func1(args) {
...
}
function func2(args) {
...
}
function handler(func, args) {
return func()
}
module.exports = {
exported1 = handler(func1, ...),
exported2 = handler(func2, ...)
}
答案 0 :(得分:0)
不确定我为什么要使用这种模式,但是我确定代码中还有更多内容,并且猜测您可以执行以下操作:
function func1(args) {
console.info(`func1 ${args}`);
}
function func2(args) {
console.info(`func2 ${args}`);
}
function handler(func, args) {
return func(args);
}
module.exports = {
exported1: (args) => {
return handler(func1, (args));
},
exported2: (args) => {
return handler(func2, (args));
},
};
答案 1 :(得分:-1)
您只需要导出函数:
module.exports = {
exported = handler
}
或者,只是:
exports.exported = handler
现在,导入后,您可以使用以下参数进行调用:
exported(func1,...)
exported(func2,...)
在阅读完您编辑过的问题后,我认为您想做这样的事情,但我不太确定:
function handler(func) {
// you can replace it with function(args) { instead of arrow function
return (args) => {
return func(args)
}
}
module.exports = {
exported1 = handler(func1),
exported2 = handler(func2)
}
exported1(args)