我有这样的代码:

var client = new mysql.Client(options);
console.log('Icanhasclient');

client.connect(function (err) {
  console.log('jannn');
  active_db = client;
  console.log(err);
  console.log('hest');

  if (callback) {
    if (err) {
      callback(err, null);
    }

    callback(null, active_db);
  }
});

我的问题是,当我运行 node 时,它会立即终止.它会打印"Icanhasclient",但不会打印任何控制台.调用回调中的日志(log).

(本例中mysql为node-mysql.

有什么可以做的,使 node .js是否在退出前等待回调完成?

推荐答案

回调未排队

node 运行,直到所有事件queues都为空.当向queue添加这样的回调时,会添加事件

  emmiter1.on('this_event',callback).

已经执行了.此调用是模块开发人员编写的代码的一部分.

如果模块是来自同步/阻塞版本的快速端口,则在部分操作完成之前,可能不会发生这种情况,并且在此之前,所有队列都可能为空,从而允许 node 以静默方式退出.

这是一个隐蔽的bug,模块开发人员在开发过程中可能不会遇到这个bug,因为在有queues多个模块的繁忙系统中,这种bug会较少出现,因为在关键时刻,它们很少都是空的.

用户可能的修复/错误检测器是在可疑函数调用之前插入一个特殊的计时器事件.

Node.js相关问答推荐

我的位置也移动时左右拖动谷歌 map

赫斯基添加命令已弃用?

查询嵌套数组中的最后一个元素具有特定值的mongoDB集合中的文档

MongoDB:更新批量操作中许多不能正常工作的内容

容器端口是容器内 node 应用程序的端口吗?

mongoose 模型填充问题

Nestjs重写子类dto nodejs中的属性

为什么 docker 容器内的应用程序无法访问它自己的 API 端点?

使用单个 MongoDB 查询更新多个元素

Indexeddb 获取所有不同于特定值的记录

在 .htaccess 中从非 www 切换到 www 后如何解决无法访问该站点?

将环境变量从 GitHub 操作传递到 json

JAVASCRIPT:foreach 循环后的空数组

在数组的另一个对象中获取数组的mongoose 对象

Node.js mongodb 驱动程序异步/等待查询

TypeError:请求路径包含未转义的字符,我该如何解决这个问题

PhoneGap/Cordova Android 开发

在 Node.js 中使用公钥加密数据

大型项目的 NodeJS vs Play 框架

在 Node.js 中混合使用 JavaScript 和 TypeScript