如何根据动态变量名调用JavaScript异步函数?
重构动态异步函数调用,替换Switch Case
当然可以,你可以用对象映射的方式替代switch case,既能减少重复代码,也让后续扩展更方便。
优化后的实现如下:
const option = "create"; const create = async(req, res) => { // do create stuff } const update = async(req, res) => { // do update stuff } // 用对象建立选项与函数的映射关系 const actionHandlers = { create, update // 新增操作时,直接在这里添加对应的键值对即可 }; // 动态获取并执行对应函数 const handler = actionHandlers[option]; if (handler) { return await handler(req, res); } else { return res.status(500).json({ message: "Unable to process your request" }); }
为什么这么做?
- 减少重复代码:不用再写大量重复的case分支和函数调用语句,逻辑更简洁。
- 扩展性更强:后续新增操作时,只需要定义新的异步函数,再在
actionHandlers对象里补充对应的键值对,无需修改核心的调用逻辑,符合开闭原则。 - 可读性更好:直接通过对象属性访问匹配函数,逻辑一目了然,比嵌套的switch case更易维护。
内容的提问来源于stack exchange,提问作者Geoff
相关产品推荐
相关产品推荐

