public abstract class IteratingNestedCallback extends IteratingCallback
This specialized callback is used when breaking up an asynchronous task into smaller asynchronous tasks. A typical pattern is that a successful callback is used to schedule the next sub task, but if that task completes quickly and uses the calling thread to callback the success notification, this can result in a growing stack depth.
To avoid this issue, this callback uses an AtomicBoolean to note if the success callback has been called during the processing of a sub task, and if so then the processing iterates rather than recurses.
This callback is passed to the asynchronous handling of each sub
task and a call the IteratingCallback.succeeded()
on this call back represents
completion of the subtask. Only once all the subtasks are completed is
the Callback.succeeded()
method called on the Callback
instance
passed the the IteratingNestedCallback(Callback)
constructor.
Callback.Completable, Callback.Completing, Callback.InvocableCallback, Callback.Nested
Invocable.InvocationType
__nonBlocking
Constructor and Description |
---|
IteratingNestedCallback(Callback callback) |
Modifier and Type | Method and Description |
---|---|
Invocable.InvocationType |
getInvocationType() |
String |
toString() |
close, failed, isClosed, isFailed, isSucceeded, iterate, reset, succeeded
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
combine, from, from, from, from, from, from
combine, getInvocationType, invokeNonBlocking, isNonBlockingInvocation
public IteratingNestedCallback(Callback callback)
public Invocable.InvocationType getInvocationType()
public String toString()
toString
in class IteratingCallback
Copyright © 2010 - 2020 Adobe. All Rights Reserved