2017-07-13 4 views
0

Ich versuche, Nodejs Funktion rekursiv in SetTimeout mit Rückruf aufrufen. Code-Snippet angehängt. Es funktioniert nicht wie erwartet. Fehle ich etwas?Aufruf Nodejs Funktion rekursiv in Settimeout mit Rückruf

Model.xyz= function(cb){ 
    //do something here and get the result. 
    if(result<10) 
    { 
     setTimeout(function(){ 
      Model.xyz(cb); 
     },5000); 
    } 

    //once result is > 10 execute following code 
} 
+0

nennen Was bedeutet "nicht funktioniert" genau? Was ist das erwartete gegen das tatsächliche Verhalten? – Sirko

Antwort

1

Nur async lib verwenden, die für immer Ihre Methode

const async = require('async'); 

Model.xyz = cb => { 
    // do somethings 
    if(result < 10) return cb(null, true); 
    cb(); 
} 

async.forever(cb => { 
    Model.xyz(repeat => { 
    // finish call and schedule next call 
    if(repeat === true) return setTimeout(cb, 5000); 
    cb('exit'); 
    }); 
}); 
+1

Super! funktionierte wie Charme !! –