node.js - 如何将 Node.js 中到达速度过快的事件输入一一写入数据库

标签 node.js asynchronous io

我使用繁琐的驱动程序从 MS SQL SELECT 查询接收输入。

我已将监听器附加到阅读器的“row”事件:

request.on('row', function(columns) {
     insert_row_other_db(columns);
});

我正在 insert_row_other_db 函数中将结果写入另一个数据库。

但是行到达的速度比写入的速度快得多,而且我只想打开一个连接。什么是去异步写入其他数据库的好方法?我想逐行写入。

最佳答案

假设您能够在 insert_row_other_db 完成时收到回调,则可以使用 Async库来创建一个可用于安排插入的队列。队列具有并发设置,允许您限制可以同时运行的任务数量。

var async = require("async");

var insertQueue = async.queue(function (columns, callback) {
  insert_row_other_db(columns, callback);
}, 1);

request.on("row", function (columns) {
  insertQueue.push(columns);
});

关于node.js - 如何将 Node.js 中到达速度过快的事件输入一一写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857822/

相关文章:

javascript - 平均堆栈 : How to update a function's result to the database?

javascript - 重定向时的 Flash 消息 - Express

node.js - 同时解决多个promise后如何返回数据?

我可以从 GPIO 的输出引脚读取有效信号吗?

Java - 如何终止非阻塞标准输入读取循环

Java - 从文件读取字节时对其进行处理

node.js - 计算字体字形的确切大小

javascript - 使用 VueJS、VuelidateJS 和 NodeJS/Express 时的项目结构

Swift 3 GCD 和解析

javascript - 多次异步调用后的回调方法