Search code examples
javascriptnode.jsasynchronouspromisersvp-promise

Node.js - call a method after another method is fully executed


I have 2 simple methods:

 function do(x,y){
   if(x){
    XHR1().success();
   }
   if(y){
    XHR2().success();
   }
}

function done(){
   return something;
}

now i just would like to be sure to call done() when do() has finished (**do() method contains async requests to Mysql DB)

how can i achieve this?**

Obviously this won't put such methods in sequence:

do(x=1,y=1);

done(); //this can run also if do() has not finished yet

So i tryed:

function do(x,y,_callback){
       if(x){
        XHR1().success();
       }
       if(y){
        XHR2().success();
       }

      _callback();
    }

    function done(){
       return something;
    }

do(x=1,y=1,done()); // this won't work the same cause callback is not dependent by XHR response

this is what i use for promises https://github.com/tildeio/rsvp.js/#arrays-of-promises


Solution

  • i know about promises but i can't get how to put it in sintax

    Assuming that XHR() does return a promise, this is what your code should look like then:

    function do(x,y) {
        var requests = [];
        if (x)
            requests.push( XHR1() );
        if (y)
            requests.push( XHR2() );
        return RSVP.all(requests);
    }
    function done(){
        return something;
    }
    
    do(1, 1).then(done);