我有一个功能
await mainFunction(function1, function2, function3)
我还想将多个函数传递到mainFunction中
const mainFunction = async (function1, function2, function3) => async ({ param1, param2, param3}) => {
const params = { param1, param3, param3};
如何在不将其作为另一个参数传递的情况下执行此操作?
如果我理解正确的话,您想向主函数传递不定数量的参数,因此您可以使用
...rest
参数。
其余参数语法允许函数接受不定数量的参数作为数组,提供了一种在 JavaScript 中表示可变参数函数的方法。 (来自MDN)
注意。 您可以随意称呼
rest parameter
。
所以在你的代码中它将看起来像这样:
const mainFunction = async (...functions) => {
// DO SOMETHING WITH THE PARAMS ARRAY
}
您可以在这里阅读更多相关信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
Rest parameters (...)
,它允许将任意数量的函数作为数组传递:
const mainFunction = async (...functions) => {
const params = { param1: value1, param2: value2, param3: value3 };
//loop through functions and call them
for (const func of functions) {
await func(params);
}
};
如果你想保持当前的语法,你可以这样做
const mainFunction = (function1, function2, function3) => async ({ param1, param2, param3 }) => {
const params = { param1, param2, param3 };
console.log(params);
await function1(param1);
await function2(param2);
await function3(param3);
};
const function1 = (param) => console.log('function1', param);
const function2 = (param) => console.log('function2', param);
const function3 = (param) => console.log('function3', param);
const paramsObject = {
param1: 'Value 1',
param2: 'Value 2',
param3: 'Value 3',
};
const innerFunction = mainFunction(function1, function2, function3);
innerFunction(paramsObject);