我的 node.js 脚本从数据库 1 的表中读取行,进行一些处理并将行写入数据库 2。
一切完成后脚本应该退出。
我怎么知道一切是否已经完成并退出节点呢?
如果我有这样的回调函数:
function exit_node() {
process.exit();
}
(编辑:与此同时,很明显 process.exit() 也可以用 db.close() 代替 - 但这不是要放什么的问题。问题是在什么时候准确地做到这一点,即如何以及在何处执行此回调。)
但是将它附加到某个地方并不容易。上次从 db1 读取之后是不正确的,因为处理和写入仍然必须发生。
把它附加到对db2的写入中并不容易,因为它必须在最后一次写入之后附加,但每次写入都是独立的,不知道是否是最后一次写入。
理论上也可能发生,最后一次写入完成,但之前的另一次写入仍在执行。
编辑:对不起,我可以看到问题的解释不完整并且可能令人困惑,但有些人仍然理解并且下面有很好的答案。请继续阅读评论和答案,它应该为您提供全貌。
编辑:我可以想到一些“阻塞”控制器机制。脚本的不同部分为每个打开的“作业”向控制器添加阻塞器,并在作业完成后释放它们,控制器在没有更多阻塞器时退出脚本。也许异步可以帮助:https ://github.com/caolan/async
我也担心这会炸毁代码和不合理的逻辑。