TaskSequencer<T extends Object> class
Manages a chain of dependent tasks, ensuring they execute sequentially.
A TaskSequencer processes tasks one after another, passing the result of
the completed task to the next one in the chain. It supports both sync and
async tasks and includes a re-entrant queue to handle new tasks that are
added while an existing sequence is already running.
Isolate sendability
A TaskSequencer is sendable through SendPort iff:
- Every handler ever passed to then / TaskSequencer.new (including
onPrevError) is a top-level function or static method — enforced by the@sendablelint. - The current
_currentresult is a Sync (synchronous) outcome — the moment any handler returns an Async,_currentbecomes isolate-local until that future settles. A freshly-constructed sequencer satisfies this trivially.
Constructors
- TaskSequencer({@noFutures @sendable TOnTaskError? onPrevError, bool eagerError = false, Duration? minTaskDuration})
Properties
-
completion
→ TResolvableOption<
T> -
A Resolvable that represents the final result of the entire sequence.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- isExecuting → bool
-
no setter
- isNotExecuting → bool
-
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
newBatch(
) → SequencedTaskBatch< T> - Creates a new SequencedTaskBatch that is bound to this sequencer.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
then(
TTaskHandler< T> handler, {TOnTaskError? onPrevError, bool? eagerError, Duration? minTaskDuration}) → TResolvableOption<T> - Appends a new task to the sequence.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
convertHandler<
T extends Object> (FutureOr< T?> handler(T? prev, Err<Object> ? err)) → TTaskHandler<T>