interface Thenable<T>

All extended interfaces
IThenable<T>

Thenable is a promise-like object with a then method which may be used to schedule callbacks on a promised value.

Instance Methods

cancel(opt_reason)code »

Cancels the computation of this promise's value, rejecting the promise in the process. This method is a no-op if the promise has already been resolved.

Parameters
opt_reason?(string|webdriver.promise.CancellationError)=

The reason this promise is being cancelled.


isPending()code »

Returns
boolean

Whether this promise's value is still being computed.


<R> then(opt_callback, opt_errback)code »

Registers listeners for when this instance is resolved.

Specified by: IThenable

Parameters
opt_callback?function(T): (R|IThenable<R>)=

The function to call if this promise is successfully resolved. The function should expect a single argument: the promise's resolved value.

opt_errback?function(*): (R|IThenable<R>)=

The function to call if this promise is rejected. The function should expect a single argument: the rejection reason.

Returns
webdriver.promise.Promise

A new promise which will be resolved with the result of the invoked callback.


<R> thenCatch(errback)code »

Registers a listener for when this promise is rejected. This is synonymous with the catch clause in a synchronous API:

// Synchronous API:
try {
  doSynchronousWork();
} catch (ex) {
  console.error(ex);
}

// Asynchronous promise API:
doAsynchronousWork().thenCatch(function(ex) {
  console.error(ex);
});
Parameters
errbackfunction(*): (R|IThenable<R>)

The function to call if this promise is rejected. The function should expect a single argument: the rejection reason.

Returns
webdriver.promise.Promise

A new promise which will be resolved with the result of the invoked callback.


<R> thenFinally(callback)code »

Registers a listener to invoke when this promise is resolved, regardless of whether the promise's value was successfully computed. This function is synonymous with the finally clause in a synchronous API:

// Synchronous API:
try {
  doSynchronousWork();
} finally {
  cleanUp();
}

// Asynchronous promise API:
doAsynchronousWork().thenFinally(cleanUp);

Note: similar to the finally clause, if the registered callback returns a rejected promise or throws an error, it will silently replace the rejection error (if any) from this promise:

try {
  throw Error('one');
} finally {
  throw Error('two');  // Hides Error: one
}

promise.rejected(Error('one'))
    .thenFinally(function() {
      throw Error('two');  // Hides Error: one
    });
Parameters
callbackfunction(): (R|IThenable<R>)

The function to call when this promise is resolved.

Returns
webdriver.promise.Promise

A promise that will be fulfilled with the callback result.

Functions

Thenable.addImplementation(ctor)code »

Adds a property to a class prototype to allow runtime checks of whether instances of that class implement the Thenable interface. This function will also ensure the prototype's then function is exported from compiled code.

Parameters
ctorfunction(new: webdriver.promise.Thenable, ...?): ?

The constructor whose prototype to modify.


Thenable.isImplementation(object)code »

Checks if an object has been tagged for implementing the Thenable interface as defined by webdriver.promise.Thenable.addImplementation.

Parameters
object*

The object to test.

Returns
boolean

Whether the object is an implementation of the Thenable interface.