导出的函数将参数和常量传递给另一个函数

时间:2019-11-17 04:21:48

标签: javascript

我真的不知道如何形容,但我会尽力解释。

我希望能够调用func1()func2(),但要在模块中通过handler()。 我想要这样一种方式:调用module.exported1("foo")会调用handler(func1, "foo"),然后调用func1("foo")。我遇到的问题是,如果我将'exported1'导出为handler(func1),我将无法传递任何被调用export1的参数(据我所知)。有解决方法吗?

注意:这是一个模块,我需要将其导出,而用户无需向func1提供func2handler()

function func1(args) {
    ...
}
function func2(args) {
    ...
}

function handler(func, args) {
    return func()
}
module.exports = {
    exported1 = handler(func1, ...),
    exported2 = handler(func2, ...)
}

2 个答案:

答案 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)