0

我尝试了很多在 nodejs 中使用 aync 库,但我最简单的测试甚至不起作用。

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

请问我做错了什么。

4

1 回答 1

6

async.forever()传递一个callbacktoshow并且inc他们需要调用:

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

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

使用setImmediate(or setTimeout) 使调用异步,因此您不会收到堆栈溢出错误:

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

var inc = function(done){
                  ^

而且,请记住,该async库不会使任务异步;它假设任务已经是异步的,只是帮助管理它们。async在大多数情况下,使用同步任务仍然会阻塞。

于 2013-07-27T22:44:42.997 回答