2017-07-13 104 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

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