调用其他函数,其中函数名是NodeJS中的字符串

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

我已经考虑了一段时间了。我的环境是AWS中的NodeJS,在WebSocket API之后作为lambda函数运行。

我知道我的邮件的名称将受到限制,例如3-4,每个邮件将具有不同的有效负载。

我绝对可以做类似的事情

switch(functionName) {
  case "functionA": functionA(jsonBody); break;
  case "functionB": functionB(jsonBody); break;
  case "functionC": functionC(jsonBody); break;
  case "functionD": functionD(jsonBody); break;
}

然后在我的每个函数中,我可以验证我的jsonBody以确认它确认该函数接受并执行处理的模式...

必须有一种不使用switch语句的更好的方法。

我可以使用function.apply,但如何从数组中找到我的“函数”。

如果我的消息名称与函数名称相同,我认为必须有一种更干净的方法来调用函数之一?

javascript websocket aws-lambda
1个回答
0
投票

您可以将您的函数附加到对象上,然后使用属性修饰符https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors调用它们>

const myFunctions = {
     functionA:()=> void,
     functionB:()=> void;
}

然后像这样访问它们

myFunctions[functionName]

如果函数已经是类或对象的一部分,这应该很简单

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