這是一個棘手的問題。是否可以批量調用函數而不等待事件循環的下一個滴答聲?批處理功能同步?
爲簡單起見的例子。
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
感謝您的幫助!
爲什麼不能直接調用'compute'? – Jerfov2
_「我們只能調用addNumber,我們不能直接調用compute。」_ - 爲什麼會這樣呢? – Joseph
在這個例子中,我沒有任何意義,但在實際使用中,addNumber是在一個特殊的上下文中執行的,這個上下文有一個需要以這種方式工作的約束。只有'addNumber'或者它的某個版本才能訪問'compute'。 – boom