2013-07-27 25 views
0

我試了很多在nodejs中使用aync庫,但我最簡單的測試甚至不起作用。我沒有得到node.js的庫異步,我錯了?

var async = require('async'); 

var i = 0 ; 

var inc = function(){ 
    i++; 
} ; 

var show = function(){ 
    console.log(i) ; 
} ; 

var err = function(err){ 
    console.log(err) ; 
} ; 

async.forever(inc,err) ; 
async.forever(show,err) ; 

功能不循環都與產量只有

1 

什麼,我doint錯了,請。

回答

6

async.forever()傳遞一個callbackshowinc,他們需要調用:

var inc = function(done){ 
    i++; 
    setImmediate(done); 
}; 

var show = function (done) { 
    console.log(i); 
    setImmediate(done); 
}; 

使用setImmediate(或setTimeout)使調用異步這樣你就不會得到一個堆棧溢出錯誤:

var inc = function(done){ 
    i++; 
    done(); 
}; 
RangeError: Maximum call stack size exceeded 

var inc = function(done){ 
       ^

而且,請記住,async li brary不會使任務異步;它假定這些任務已經是異步的並且只是幫助管理它們。在大多數情況下,使用async的同步任務仍將阻止。

+0

你真棒,它的工作原理,我明白爲什麼,謝謝你的解釋。 –

相關問題