我正在 NodeJs 上构建我的服务。 我有一个网页抓取功能,我必须为不同的域调用不同的爬虫。
if (domain == "aaa.kr") result = await crawlAA(args.url)
else if (domain == "aaa.com") result = await crawlA(args.url)
else if (domain == "bbb.com") result = await crawlB(args.url)
else if (domain == "ccc.com") result = await crawlC(args.url)
else if (domain == "d.com") result = await crawlD(args.url)
else result = await crawlOthers(args.url)
现在,我有大约 10 个 else if
子句。但是,我需要添加超过 50~100 个 else-if
,我认为这在将来可能会成为一个问题。
有没有有效的方法来处理字符串 if 子句? 主要按起始字母进行过滤会有帮助吗?
最佳答案
性能几乎肯定不是这里的问题 - 没有循环或嵌套循环,这里的问题是非常湿的代码,如果你有很多 else
/if
s.
不要使用大量独立的抓取
函数,而是使用由域索引的对象,例如:
const fns = {
'aaa.kr': <code of crawlAA here>,
'aaa.com': <code of crawlA here>,
'bbb.com': <code of crawlB here>,
// ...
};
然后在尝试查找结果
时在对象上找到适当的函数值,并调用它:
const fn = fns[domain];
const result = fn ? fn(args.url) : crawlOthers(args.url);
关于javascript - 提高 else-if 链的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024597/