The goog.async.Deferred Class

goog.async.Deferred(opt_canceller, opt_defaultScope)

Represents the results of an asynchronous operation. A Deferred object starts with no result, and then gets a result at some point in the future.

opt_canceller {Function=}
A function that will be called if the deferred is cancelled.
opt_defaultScope {Object=}
The default scope to call callbacks with.

The goog.async.Deferred.AlreadyCalledError Class

An error sub class that is used when a deferred has already been called. … more

The goog.async.Deferred.CancelledError Class

An error sub class that is used when a deferred is cancelled. … more

.addBoth(f, opt_scope)

Registers a function as both callback and errback.

f {!Function}
The function to be called on any result.
opt_scope {Object=}
An optional scope to call the callbacks in.
returns {!goog.async.Deferred}
The deferred object for chaining.

.addCallback(cb, opt_scope)

Register a callback function, to be called when a successful result is available.

cb {!Function}
The function to be called on a successful result.
opt_scope {Object=}
An optional scope to call the callback in.
returns {!goog.async.Deferred}
The deferred object for chaining.

.addCallbacks(cb, eb, opt_scope)

Registers a callback function and errback function.

cb {Function}
The function to be called on a successful result.
eb {Function}
The function to be called on an unsuccessful result.
opt_scope {Object=}
An optional scope to call the callbacks in.
returns {!goog.async.Deferred}
The deferred object for chaining.

.addErrback(eb, opt_scope)

Register a callback function, to be called if this operation fails.

eb {!Function}
The function to be called on an unsuccessful result.
opt_scope {Object=}
An optional scope to call the errback in.
returns {!goog.async.Deferred}
The deferred object for chaining.

.awaitDeferred(otherDeferred)

Makes this Deferred wait for otherDeferred to be called, and its preceding callbacks to be executed, before continuing with the callback sequence. This is equivalent to adding a callback that returns otherDeferred, but doesn't prevent additional callbacks from being added to otherDeferred.

otherDeferred {!goog.async.Deferred}
The Deferred to wait for.
returns {!goog.async.Deferred}
The deferred object for chaining.

.branch(opt_propagateCancel)

Create a branch off this Deferred's callback chain, and return it as a new Deferred. This means that the return value will have the value at the current point in the callback chain, regardless of any further callbacks added to this Deferred. Additional callbacks added to the original Deferred will not affect the value of any branches. All branches at the same stage in the callback chain will receive the same starting value.

opt_propagateCancel {boolean=}
If cancel() is called on every child branch created with opt_propagateCancel, the parent will be cancelled as well.
returns {!goog.async.Deferred}
The deferred value at this point in the callback chain.

.callback(opt_result)

Record a successful result for this operation, and send the result to all registered callback functions.

opt_result {*=}
The result of the operation.

.cancel(opt_deepCancel)

Cancels a deferred that has not yet received a value. If this Deferred is paused waiting for a chained Deferred to fire, the chained Deferred will also be cancelled. If this Deferred was created by calling branch() on a parent Deferred with opt_propagateCancel set to true, the parent may also be cancelled. If opt_deepCancel is set, cancel() will be called on the parent (as well as any other ancestors if the parent is also a branch). If one or more branches were created with opt_propagateCancel set to true, the parent will be cancelled if cancel() is called on all of those branches.

opt_deepCancel {boolean=}
If true, cancels this Deferred's parent even if cancel() hasn't been called on some of the parent's branches. Has no effect on a branch without opt_propagateCancel set to true.

.cancelled()

Creates a deferred that has already been cancelled.

returns {!goog.async.Deferred}
The deferred object.

.chainDeferred(otherDeferred)

Adds another deferred to the end of this deferred's processing chain. Use this when you want otherDeferred to be called at the end of thisDeferred's previous callbacks.

otherDeferred {!goog.async.Deferred}
The Deferred to chain.
returns {!goog.async.Deferred}
The deferred object for chaining.

.errback(opt_result)

Record that this operation failed with an error, and send the error to all registered errback functions.

opt_result {*=}
The error result of the operation.

.fail(res)

Creates a deferred that always fails.

res {*}
The error result.
returns {!goog.async.Deferred}
The deferred object.

.hasFired()

returns {boolean}
Whether callback or errback has been called on this deferred.

.succeed(res)

Creates a deferred that always succeeds.

res {*}
The result.
returns {!goog.async.Deferred}
The deferred object.

.when(value, callback, opt_scope)

Applies a callback to both deferred and non-deferred values, providing a mechanism to normalize synchronous and asynchronous behavior. If the value is non-deferred, the callback will be executed immediately and an already committed deferred returned. If the object is a deferred, it is branched (so the callback doesn't affect the previous chain) and the callback is added to the new deferred. The branched deferred is then returned. In the following (contrived) example, if isImmediate is true then 3 is alerted immediately, otherwise 6 is alerted after a 2-second delay.

 var value;
 if (isImmediate) {
   value = 3;
 } else {
   value = new goog.async.Deferred();
   setTimeout(function() { value.callback(6); }, 2000);
 }

 var d = goog.async.Deferred.when(value, alert);
 
value {*}
Deferred or non-deferred value to pass to the callback.
callback {!Function}
The callback to execute.
opt_scope {Object=}
An optional scope to call the callback in.
returns {!goog.async.Deferred}