2017-07-13 73 views
0

我想在回调setTimeout中递归调用nodejs函数。附上代码片段。它没有按预期工作。我错过了什么?调用nodejs函数settimeout与回调

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

什么是“不工作”意味着什么?预期与实际行为有什么区别? – Sirko

回答

1

只需使用异步LIB,将永远调用你的方法

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

太棒了!像魅力一样工作! –