我正在玩Node和Mongoose,我对以下问题感到好奇:
我正在尝试从循环/间隔内将文档保存到mongo。
以下工作正常:
setInterval(function(){
var doc = new myModel({ name: 'test' });
doc.save(function (err, doc){
if (err) return console.error(err);
doc.speak();
});
}, 1);
以下不起作用:
while(true){
var doc = new myModel({ name: 'test' });
doc.save(function (err, doc){
if (err) return console.error(err);
doc.speak();
});
}
这种行为有什么解释?保存回调永远不会在方案2中触发
此外,有人可以评论建立“长跑工人”的最佳做法吗?我感兴趣的是使用node构建后台工作程序来处理数据队列。是一段时间()一个坏主意?的setInterval()?另外,我计划使用forever模块来保持进程活着
谢谢!
答案 0 :(得分:2)
Node.js是单线程的,因此while(true)
将完全占用单个线程,永远不会让doc.save
回调有机会运行。
你问题的第二部分过于宽泛,你应该一次只问一个问题。