nodejs如何实现对mongodb的同步操作,非回调的阻塞io
发布于 13 年前 作者 dajibo168 14875 次预览 最后一次回复是 12 年前 来自
如下面的代码: tags.forEach(function(tag){ tag.tasks.push(task); con.connect(); tag.save(function(err) { con.disconnect(); if (err) { console.log('编辑失败! '+ err); callback(err); }else console.log(“插入成功”); }); }); 如果非阻塞的io就会出现trying to open a unclosed connection。上一个回调完成释放连接前,下一个连接就请求建立了。 如何把循环变成同步的呢?希望在循环结束后再执行callback(null)怎么做呢?
11 回复
去看看async
async本质还是回调吧
why connect every time
1.你可以保持数据库一直连接 2.如果你觉得一直连接,会消耗性能,可以使用连接池 3.即使不将异步for循环改为同步for循环,依然是有办法判断循环是否结束的
@cony138 是,但是代码结构清晰多了
@danielking 我还以为他需要本质上是同步的方法
async用起来蛮方便的
即使不将异步for循环改为同步for循环,依然是有办法判断循环是否结束的
求解。
@XadillaX
@a272121742 话说我用Fibers实现了MongoDB的同步阻塞模块,有兴趣可以看看-. -
http://xcoder.in/blog/2013/03/nodejs-mongodb-sync.xhtml
@XadillaX 异步的方式已经很习惯了