JS 中的惰性日志记录评估?

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

有没有办法在记录时进行惰性评估?

例如

console.log("Result: ", throwingFunc())
不会记录第一个参数 (
"Result: "
),因为第二个参数
throwingFunc()
将在调用
console.log(..)
之前进行评估。

我还尝试了

logger.debug("Result: ", () => throwingFunc())
log4js
和其他库,但令我惊讶的是它们都不起作用......

javascript node.js logging lazy-evaluation
1个回答
0
投票

您可以检查记录器函数的参数,当其中一个或多个函数为函数时,仅记录这些函数的结果。比如:

const throwingFunc = () => `thrown someting`;
const logger = (...args) => {
  let evaluate = args.filter(v => v instanceof Function);
  if (evaluate.length) {
    args = evaluate.map(v => v());
  }
  args.forEach(arg => console.log(arg));
}

logger("Result: ", throwingFunc);

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