I have a requirement where we need to write a node module using promises. So there would be 3 different promises. Result should be sent back only when all three of them resolve. I have written some code. Currently the result comes as undefined. Let me know what can I add to fix this.
This is the node module code -
var exports = module.exports = {};
exports.getData = function() {
    var Q = require('q');
    var result = 0;
    // Promise 1
    var deferred = Q.defer();
    var promise1 = Q.fcall(function() {
      setTimeout( function(){console.log('hi');deferred.resolve(9);}, 1000 );
      return deferred.promise;
    });
    promise1.then(function(contents) {
        result = result + contents;
      console.log(contents);
    });
    // promise 2
    var deferred2 = Q.defer();
    var promise2 = Q.fcall(function() {
      setTimeout( function(){console.log('hi');deferred2.resolve(10);}, 1000 );
      return deferred2.promise;
    });
    promise2.then(function(contents) {
        result = result + contents;
      console.log(contents);
    });
    // promise3
    var deferred3 = Q.defer();
    var promise3 = Q.fcall(function() {
      setTimeout( function(){console.log('hi');deferred3.resolve(11);}, 1000 );
      return deferred3.promise;
    });
    promise3.then(function(contents) {
        result = result + contents;
      console.log(contents);
    });
};
This is the invoking code -
var x = require('./example5.js');
var result = x.getData();
console.log(' Result is ' + result);
So I need to figure out a way to hold on to the execution of the node module until all the promises are resolved.
Currently the output is -
Result is undefined
P.S I am a newbie to node.js. So if this is something very obvious, please excuse me!
I think the question was flagged as duplicate. However in the other question, I could not find solution to return the result back. It still returns the promise.
 
    