Javascript 循环计时器的节点js

Javascript 循环计时器的节点js,javascript,node.js,postgresql,timer,Javascript,Node.js,Postgresql,Timer,我正在尝试测试哪个数据库可以在Node.js中实现,它在某些任务中的时间最快 我在这里使用一些数据库,每次我尝试为for循环计时时,计时器都会很快结束,但任务实际上并没有完成。代码如下: console.time("Postgre_write"); for(var i = 0; i < limit; i++){ var worker = { id: "worker" + i.toString(), ps: Math.ra

我正在尝试测试哪个数据库可以在Node.js中实现,它在某些任务中的时间最快

我在这里使用一些数据库,每次我尝试为for循环计时时,计时器都会很快结束,但任务实际上并没有完成。代码如下:

console.time("Postgre_write");

    for(var i = 0; i < limit; i++){
    var worker = {          
        id: "worker" + i.toString(),
        ps: Math.random(),
        com_id: Math.random(),
        status: (i % 3).toString()
    }
    client.query("INSERT INTO test(worker, password, com_id, status) values($1, $2, $3, $4)", [worker.id, worker.ps, worker.com_id, worker.status]);
}

console.timeEnd("Postgre_write");
console.time(“Postgre_write”);
对于(变量i=0;i
当我尝试了几百次后,我认为结果是正确的。但当我测试100000等更高的数字时,控制台输出500ms,但当我检查PGadmin应用程序时,插入仍在处理中


很明显我这里有点不对劲,但我不知道是什么。我严重依赖计时器数据,我需要找到一种方法来正确计时这些操作。帮忙

Node.js是异步的。这意味着您的代码不一定会按照您编写的顺序执行

看看这篇文章,它对异步编程提供了相当不错的解释

在代码中,查询被发送到数据库并开始执行。由于节点是异步的,所以它不会等待该行完成执行,而是转到下一行(这会停止计时器)

查询完成运行后,将发生回调并通知节点查询已完成。如果指定回调函数,它将在该点运行。考虑事件驱动编程,查询的完成是一个事件


要解决您的问题,请停止查询回调函数中的计时器。

但是,如果我执行类似query.on(“end”,some callback)的操作,则每个查询都会执行某些操作,并且会滞后。有没有办法只识别最后一个查询?