Skip to content
Brian Cavalier edited this page Feb 3, 2012 · 3 revisions

The when/delay helper creates a promise that automatically resolves after a specified delay, if not rejected sooner. In it's simplest form, when/delay can behave like a promise-based version of setTimeout():

var delay = require('when/delay');

function doSomething() { ... }

// These are equivalent
setTimeout(doSomething, 1000);

delay(1000).then(doSomething);

But, when/delay has a few other tricks up it's sleeve. It can accept two arguments, the first of which may be a promise or a value, allowing it to forward that on to the handler.

var delay = require('when/delay');

var value = 'hi';

// Using setTimeout requires wrapping
setTimeout(function() {
	console.log(value);
}, 1000);

// Using delay to forward the value
delay(value, 1000).then(console.log);

When passing a promise as the first argument, the delay will happen after that input promise resolves, and will forward the resolution value of the promise.

var delay = require('when/delay');

function doAsyncCalculation() {
	// ...
	return promise;
}

// This will log the result of doAsyncCalculation *1 second after*
// it completes.
delay(doAsyncCalculation(), 1000).then(console.log);
Clone this wiki locally