有没有办法在记录时进行惰性评估?
例如
console.log("Result: ", throwingFunc())
不会记录第一个参数 ("Result: "
),因为第二个参数 throwingFunc()
将在调用 console.log(..)
之前进行评估。
我还尝试了
logger.debug("Result: ", () => throwingFunc())
与 log4js
和其他库,但令我惊讶的是它们都不起作用......
您可以检查记录器函数的参数,当其中一个或多个函数为函数时,仅记录这些函数的结果。比如:
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);