我尝试了很多在节点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
请问我的错误。
答案 0 :(得分:6)
async.forever()
将callback
传递给他们需要致电的show
和inc
:
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
库不会使任务异步;它假定任务已经是异步的,只是帮助管理它们。在大多数情况下,使用async
的同步任务仍会阻止。