将多个参数和多个函数传递到一个函数中

问题描述 投票:0回答:3

我有一个功能

 await mainFunction(function1, function2, function3)

我还想将多个函数传递到mainFunction中

const mainFunction =   async (function1, function2, function3) =>  async ({ param1, param2, param3}) => {

const params = { param1, param3, param3};

如何在不将其作为另一个参数传递的情况下执行此操作?

javascript functional-programming composition
3个回答
0
投票

如果我理解正确的话,您想向主函数传递不定数量的参数,因此您可以使用

...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


0
投票

您可以尝试使用

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);
  }
};

0
投票

如果你想保持当前的语法,你可以这样做

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);

© www.soinside.com 2019 - 2024. All rights reserved.