【发布时间】:2021-10-06 13:53:48
【问题描述】:
我有一个function,它处理大量 JSON 文档,inserts 将它们处理成MongoDB。
我想log 这个函数在几个位置做什么,然后将有效负载转移到 S3。但是,这是被调用者的条件。
function doStuffWithJSON(options={}) {
const apiRes = getJSONFromAPI();
if (options.logAndChuck) { console.log('we got results successfully') }
//50 lines of code that are unconditionally being executed
if (options.logAndChuck) { console.log('we did stuff with the result') }
//Another 50 lines of code that are unconditionally being executed
if (options.logAndChuck) { sendJsonToS3(apiRes) }
}
这里的重复模式是我在函数的多个不同位置有相同的if 语句。考虑到它的性质,不确定是否有任何方法可以避免这种情况。
想知道是否有任何模式可以像这样清理东西。
谢谢!
【问题讨论】:
-
您可以为此创建一个函数 - 在本地函数范围或更高的范围内采用回调函数。
-
嗯,你在做不同的事情,所以这不是一回事......你可以创建一个日志方法来进行检查。
-
好吧,我以更一般的方式阅读了这个问题(“想知道是否有任何模式可以像这样清理东西”)。是的,有一个模式。然而,对于这个简单的
if语句,多次使用它不是问题,但它可能会更复杂。更像是doStuff(options, () => ...) -
有什么更复杂的例子以及对实际模式的参考吗?谢谢
-
@user2402616 请参阅下面的答案。 “更复杂”是指
if (options.optionA && !options.optionB && options.optionC != 'something') ...
标签: javascript node.js design-patterns