q-lazy

Q lazy promise resolution

Q.lazy()

Resolves promises idly.

npm install q-lazy

It's a simple plugin for Q allowing you to create lazy promises. Such promises start to resolve only after calling .then() on them.

var Q = require('q');
require('q-lazy'); // extends Q 
 
function heavyFunc () {
    // ... 
    return ret; // the return value can be a promise or a plain value 
}
 
var promise = Q.lazy(heavyFunc); // doesn't execute heavyFunc 
 
promise.then(function (ret) {    // executes heavyFunc 
    // use ret 
});

For specification take a look at provided testsuite. It's short.