addTask<T> method
Future<T>
addTask<T>({
- required Future<
T> task(), - int priority = 0,
- String? taskName,
- void onStart()?,
- void onComplete(
- T result
- void onError(
- dynamic error,
- StackTrace stackTrace
Adds a task to the queue
task
is the function to execute
priority
is the priority of the task (higher values = higher priority)
taskName
is an optional name for the task (for logging)
onStart
is an optional callback for when the task starts
onComplete
is an optional callback for when the task completes
onError
is an optional callback for when the task fails
Implementation
Future<T> addTask<T>({
required Future<T> Function() task,
int priority = 0,
String? taskName,
void Function()? onStart,
void Function(T result)? onComplete,
void Function(dynamic error, StackTrace stackTrace)? onError,
}) {
final completer = Completer<T>();
final name = taskName ?? 'Task-${DateTime.now().millisecondsSinceEpoch}';
_logger.info('Adding task to queue: $name (priority: $priority)');
final scrapingTask = _ScrapingTask<T>(
task: task,
completer: completer,
priority: priority,
name: name,
onStart: onStart,
onComplete: onComplete,
onError: onError,
);
_pendingTasks.add(scrapingTask);
_sortQueue();
_processQueue();
return completer.future;
}