同步批处理功能?

时间:2017-03-17 15:32:07

标签: javascript

这是一个棘手的问题。是否可以批量函数调用而无需等待事件循环的下一个滴答?

简化的派生示例。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

没有。我建议移动compute函数的位置,以便在您需要检索之前计算total的值。

我能想到的任何其他选项都需要某种异步功能,而您已经说过您不想要的功能。