INNER CODE UNIT · Dart

AsyncTaskQueue

foxsofter/flutter_thrio · lib/src/async/async_task_queue.dart:26

class AsyncTaskQueue {
  final _queue = <Completer<dynamic>>[];

  Future<T?> add<T>(Future<T> Function() task, {Duration? timeLimit}) {
    final completer = Completer<T?>();

    void complete(T? value) {
      if (!completer.isCompleted) {
        _queue.remove(completer);
        completer.complete(value);
      }
    }

    final last = _queue.lastOrNull;
    _queue.insert(_queue.length, completer);
    if (last == null) {
      final f = task().then(complete).catchError((_) => complete(null));
      if (timeLimit != null) {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…