簡體   English   中英

批處理功能是否同步?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM