emit method

Future<void> emit(
  1. String name,
  2. dynamic event
)

发出事件触发

Implementation

Future<void> emit(String name, dynamic? event) async {
  if (_containers.containsKey(name)) {
    final removeIndexes = <int>[];
    for (var i = 0; i < _containers[name]!.length; i++) {
      final container = _containers[name]![i];
      if (event is AsynchronizedEvent && event.isAsynchronized()) {
        await container.listener(event);
      } else {
        container.listener(event);
      }
      if (container.limit > 0) {
        container.limit--;
      }
      if (container.limit == 0) {
        removeIndexes.add(i);
      }
      if (event is CancelledEvent && event.isCancelled()) {
        break;
      }
    }
    removeIndexes.forEach(_containers[name]!.removeAt);
  }
}