Interface Promise<D>
- Type Parameters:
D- Type used fordone(DoneCallback)F- Type used forfail(FailCallback)
- All Superinterfaces:
Supplier<D>
- All Known Subinterfaces:
Deferred<D>
- All Known Implementing Classes:
AbstractPromise,DeferredObject
Promise interface to observe when some action has occurred on the corresponding
Deferred object.
A promise object should be obtained from {@link Deferred#promise()), or
by using DeferredManager.
<pre>
<code>
Deferred deferredObject = new DeferredObject();
Promise promise = deferredObject.promise();
promise.done(new DoneCallback() {
public void onDone(Object result) {
// Done!
}
});
// another thread using the same deferredObject
deferredObject.resolve("OK");
- Author:
- Ray Tsang, Stephan Classen
- See Also:
-
Deferred.resolve(Object)Deferred#reject(Object)
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionalways(AlwaysCallback<? super D> callback) This method will registerAlwaysCallbackso that when a Deferred object is either resolved (Deferred.resolve(Object)) or rejected (Deferred#reject(Object)),AlwaysCallbackwill be triggered.This method will registerDoneCallbackso that when a Deferred object is resolved (Deferred.resolve(Object)),DoneCallbackwill be triggered.This method will registerFailCallbackso that when a Deferred object is rejected (Deferred#reject(Object)),FailCallbackwill be triggered.get the resolved value, return defaultValue for rejectedget the resolved value, return defaultSupplier‘s result for rejectedbooleanQueries the state of this promise, returningtrueiff it isState.PENDING.booleanQueries the state of this promise, returningtrueiff it isState.REJECTED.booleanQueries the state of this promise, returningtrueiff it isState.RESOLVED.state()状态Equivalent todone(DoneCallback)Equivalent todone(DoneCallback).fail(FailCallback)voidThis method will wait as long as the State is Pending.voidwaitSafely(long timeout) This method will wait when the State is Pending, and return when timeout has reached.
-
Method Details
-
state
Promise.State state()状态- Returns:
- the state of this promise.
-
isPending
boolean isPending()Queries the state of this promise, returningtrueiff it isState.PENDING.- Returns:
trueif the current state of this promise isState.PENDING,falseotherwise.- See Also:
-
isResolved
boolean isResolved()Queries the state of this promise, returningtrueiff it isState.RESOLVED.- Returns:
trueif the current state of this promise isState.RESOLVED,falseotherwise.- See Also:
-
isRejected
boolean isRejected()Queries the state of this promise, returningtrueiff it isState.REJECTED.- Returns:
trueif the current state of this promise isState.REJECTED,falseotherwise.- See Also:
-
getOrElse
get the resolved value, return defaultValue for rejected- Parameters:
defaultValue-- Returns:
-
getOrElse
get the resolved value, return defaultSupplier‘s result for rejected- Parameters:
defaultSupplier-- Returns:
-
then
Equivalent todone(DoneCallback)- Parameters:
doneCallback- seedone(DoneCallback)- Returns:
thisfor chaining more calls
-
then
Equivalent todone(DoneCallback).fail(FailCallback)- Parameters:
doneCallback- seedone(DoneCallback)failCallback- seefail(FailCallback)- Returns:
thisfor chaining more calls
-
done
This method will registerDoneCallbackso that when a Deferred object is resolved (Deferred.resolve(Object)),DoneCallbackwill be triggered. If the Deferred object is already resolved then theDoneCallbackis triggered immediately. You can register multipleDoneCallbackby calling the method multiple times. The order of callback trigger is based on the order they have been registered.promise.progress(new DoneCallback(){ public void onDone(Object done) { ... } });- Parameters:
callback- the callback to be triggered- Returns:
thisfor chaining more calls- See Also:
-
fail
This method will registerFailCallbackso that when a Deferred object is rejected (Deferred#reject(Object)),FailCallbackwill be triggered. If the Deferred object is already rejected then theFailCallbackis triggered immediately. You can register multipleFailCallbackby calling the method multiple times. The order of callback trigger is based on the order they have been registered.promise.fail(new FailCallback(){ public void onFail(Object rejection) { ... } });- Parameters:
callback- the callback to be triggered- Returns:
thisfor chaining more calls- See Also:
-
Deferred#reject(Object)
-
always
This method will registerAlwaysCallbackso that when a Deferred object is either resolved (Deferred.resolve(Object)) or rejected (Deferred#reject(Object)),AlwaysCallbackwill be triggered. If the Deferred object is already resolved or rejected then theAlwaysCallbackis triggered immediately. You can register multipleAlwaysCallbackby calling the method multiple times. The order of callback trigger is based on the order they have been registered.AlwaysCallbacks are triggered after anyDoneCallbackorFailCallbackrespectively.promise.always(new AlwaysCallback(){ public void onAlways(State state, Object result, Object rejection) { if (state == State.RESOLVED) { // do something with result } else { // do something with rejection } } });- Parameters:
callback- the callback to be triggered- Returns:
thisfor chaining more calls- See Also:
-
Deferred.resolve(Object)Deferred#reject(Object)
-
waitSafely
This method will wait as long as the State is Pending. This method will return fast when State is not Pending.- Throws:
InterruptedException- if thread is interrupted while waiting
-
waitSafely
This method will wait when the State is Pending, and return when timeout has reached. This method will return fast when State is not Pending.- Parameters:
timeout- the maximum time to wait in milliseconds- Throws:
InterruptedException- if thread is interrupted while waiting
-