goog.async.Deferred
Classgoog.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
=}
opt_defaultScope
{Object
=}
goog.async.Deferred.AlreadyCalledError
ClassAn error sub class that is used when a deferred has already been called. … more
goog.async.Deferred.CancelledError
ClassAn 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
}
opt_scope
{Object
=}
goog.async.Deferred
}
.addCallback(cb, opt_scope)
Register a callback function, to be called when a successful result is available.
cb
{!Function
}
opt_scope
{Object
=}
goog.async.Deferred
}
.addCallbacks(cb, eb, opt_scope)
Registers a callback function and errback function.
cb
{Function
}
eb
{Function
}
opt_scope
{Object
=}
goog.async.Deferred
}
.addErrback(eb, opt_scope)
Register a callback function, to be called if this operation fails.
eb
{!Function
}
opt_scope
{Object
=}
goog.async.Deferred
}
.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
}
goog.async.Deferred
}
.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
=}
goog.async.Deferred
}
.callback(opt_result)
Record a successful result for this operation, and send the result to all registered callback functions.
opt_result
{*=}
.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
=}
.cancelled()
Creates a deferred that has already been cancelled.
goog.async.Deferred
}
.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
}
goog.async.Deferred
}
.errback(opt_result)
Record that this operation failed with an error, and send the error to all registered errback functions.
opt_result
{*=}
.fail(res)
Creates a deferred that always fails.
res
{*}
goog.async.Deferred
}
.hasFired()
boolean
}
.isError(res)
[protected]res
{*}
boolean
}
.succeed(res)
Creates a deferred that always succeeds.
res
{*}
goog.async.Deferred
}
.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
{*}
callback
{!Function
}
opt_scope
{Object
=}
goog.async.Deferred
}