我有这样的代码:
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 时,它会立即终止。它打印“Icanhas Client”,但回调内的任何 console.logs 都不会被调用。
(本例中的 mysql 是节点mysql.
有什么办法可以让node.js在退出之前等待回调完成吗?
回调未排队
节点运行直到所有事件发生queues是空的。回调被添加到事件中queue当一个电话如
emmiter1.on('this_event',callback).
已执行。该调用是模块开发人员编写的代码的一部分。
如果模块是同步/阻塞版本的快速端口,则在操作的某些部分完成之前这可能不会发生,并且所有队列可能在此之前清空,从而允许节点静默退出。
这是一个偷偷摸摸的错误,模块开发人员在开发过程中可能不会遇到这个错误,因为在具有许多功能的繁忙系统中,这种错误很少发生。queues因为在关键时刻,他们都空着的情况是很少见的。
用户可能的修复/错误检测器是在可疑函数调用之前插入特殊的计时器事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)