[英]Batching functions synchronously?
這是一個棘手的問題。 是否可以在不等待事件循環的下一個刻度的情況下批量調用函數?
為簡單起見而衍生的示例。
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 = []
}
這是當前發生的情況。 在每個addNumber
之后都會進行一次compute
,因為我們需要對總數進行同步計算。
這是我們需要工作的例子。 我們只能調用addNumber
,而不能直接調用compute
。 有沒有一種方法可以更改addNumber
以便此示例正常運行,但僅調用一次compute
?
addNumber(2)
addNumber(4)
addNumber(10)
console.log(total === 16) // needs to be true
謝謝你的幫助!
否。我建議您移動compute
函數的位置,以便它在需要檢索total
之前計算total
的值。
我能想到的任何其他選擇都將需要某種異步功能,您已經說過不需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.