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) {