Client-Side Data - High Frequency Updates

High Frequency Updates relates to lots of updates in high succession going into the grid. Every time you update data in the grid, the grid will rework all aggregations, sorts and filters as well as having the browser update its DOM. If you are streaming multiple updates into the grid this can be a bottleneck. High Frequency Updates are achieved in the grid using Async Transactions. Async Transactions allow for efficient high-frequency grid updates.

When you call applyTransactionAsync() the grid will execute the update, along with any other updates you subsequently provide using applyTransactionAsync(), after 50ms. This allows the grid to execute all the transactions in one batch which is more efficient.

To help understand the interface for applyTransaction() and applyTransactionAsync(), here are both method signatures side by side. The first executes immediately. The second executes sometime later using a callback for providing a result.

// normal applyTransaction takes a RowDataTransaction and returns a RowNodeTransaction applyTransaction(rowDataTransaction: RowDataTransaction): RowNodeTransaction // batch takes a RowDataTransaction and the result is provided some time later via a callback applyTransactionAsync(rowDataTransaction: RowDataTransaction, callback?: (res: RowNodeTransaction) => void): void

The default wait between executing batches is 50ms. This can be changed using the grid property asyncTransactionWaitMillis.

Use Async Transactions if you have a high volume of streaming data going into the grid and want don't want the grid's rendering and recalculating to be a bottleneck.

You might ask, wouldn't using a virtual DOM like React remove the necessity of Async Transactions? The answer is no. A virtual DOM would only batch the DOM related updates, it would not help with the batching of aggregations, sorts and filters.