搜索

今天进行连接数据库的时候,遇到这个错误,于是染念就开始debug time了。

首先,我们需要了解一下node.js里的回调函数

Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件
I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。

以上摘自菜鸟教程

也就是说在node.js里是异步的,就是出现在这个异步里,可以看以下的例子

app.post("/user", (req, res) => {
    connection.query(addSql, addSqlParams, function (err, result) {
      ....
    });
connection.end();
}

我们可以发现end()和query()在不同级里,这样就会出现一个问题。
当异步操作(query)还没有结束,数据库的连接就被关闭了。它并不根据代码的行数以及时间顺序执行。

所以你可以把end放在里面的回调函数里面,或者设置个计时器稍后关闭

版权属于:染念
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
6
查看目录

目录

来自 《node.js报错 Cannot enqueue Query after invoking quit.》

染念

博主很懒,啥都没有