这是一个棘手的问题。是否可以批量函数调用而无需等待事件循环的下一个滴答?
简化的派生示例。
let numbers = []
let total = 0
const addNumber = (num) => {
numbers.push(num)
compute()
}
// for the sake of this argument let's say compute is very expensive to run
const compute = () => {
numbers.forEach((num) => {
total += num
})
numbers = []
}
目前正在发生这种情况。 compute
在每addNumber
后运行,因为我们需要同步计算总数。
这是我们需要工作的例子。我们只能致电addNumber
我们无法直接致电compute
。有没有办法改变addNumber
所以这个例子有效,但只调用compute
一次?
addNumber(2)
addNumber(4)
addNumber(10)
console.log(total === 16) // needs to be true
感谢您的帮助!
答案 0 :(得分:0)
没有。我建议移动compute
函数的位置,以便在您需要检索之前计算total
的值。
我能想到的任何其他选项都需要某种异步功能,而您已经说过您不想要的功能。