我在Postgres中有一个非常大的表,我想对该表的每一行进行异步操作。
因此,我正在使用pg-query-stream
模块通过流获取输入数据,并且其性能非常好。我还在下面的代码中使用event-stream
模块-es
-但不是强制性的,只是在这里描述整个情况。
节点使用越来越多的内存,因为调用堆栈不断累积,直到达到极限并崩溃为止。
在这种情况下,哪种模式更好?
这是我的代码:
pool.connect(function(err, client, done) {
if(err) throw err;
var query = new QueryStream("SELECT * FROM largeTable");
var stream = client.query(query);
stream.on('end', done);
stream.pipe(
es.mapSync(function (data) {
//DO SOMETHING WITH DATA
mySlowAsyncFunction(data) {
//THE END
});
})
)
});