dispatchBatch method
Dispatches a burst of events through one session operation and performs one state sync and one renderer refresh after the whole burst completes. Event handlers still execute in input order inside QuickJS.
Implementation
Future<void> dispatchBatch(Iterable<Map<String, Object?>> events) async {
final batch = List<Map<String, Object?>>.unmodifiable(events);
if (batch.isEmpty) {
return;
}
return _enqueue(() async {
_ensureActive();
for (final event in batch) {
inspector?.recordAction(event);
}
if (_supportsMutationProtocol()) {
await _dispatchMutationBatch(batch);
return;
}
var changed = false;
for (final event in batch) {
final result = await _clientCall('handleEvent', <Object?>[event]);
changed = _resultChanged(result) || changed;
}
if (!changed || _disposed) {
return;
}
await _syncStateFromJs();
await _refreshImpl();
});
}