gpt4 book ai didi

javascript - Node.js 不执行回调中的最后一个表达式

转载 作者:行者123 更新时间:2023-11-29 07:29:30 25 4
gpt4 key购买 nike

我编写了这段代码来查询 Node 8 中的 MySQL 数据库:

const getDB = require('./db');
function getCrawls(cb) {
const db = getDB();
const rows = db.query('select * from crawls', (err, result) => {
console.log('got result', result);
cb(result);
});
}
getCrawls(c => console.log('done', c));

但是,当我运行它时,我只得到以下输出:

got result []

现在奇怪的是,如果我在调用回调后添加另一个 console.log,它会起作用:

const getDB = require('./db');
function getCrawls(cb) {
const db = getDB();
const rows = db.query('select * from crawls', (err, result) => {
console.log('got result', result);
cb(result);
console.log('complete');
});
}
getCrawls(c => console.log('done', c));

现在我得到这个输出:

got result []
done []

似乎查询回调的最后一条语句没有被调用,有人知道为什么会这样吗?

编辑:

这是getDB的代码

const mysql = require('mysql');
function getDB() {
const db = mysql.createConnection({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
})
db.connect();
return db;
}
module.exports = getDB;

听起来错误可能与MySQL模块有关?

最佳答案

使用我们从您的代码中获得的信息,它应该可以正常工作;查看以下代码段。

您的代码似乎在执行 cb(result); 时卡住了,也许那里有未捕获的异常?

function query(data, callback) {
setTimeout(() => {
callback(false, ['result']);
}, 1000);
}

function getCrawls(cb) {
const rows = query('select * from crawls', (err, result) => {
console.log('got result', result);

cb(result);

console.log('complete');
});
}

getCrawls(c => console.log('done', c));

关于javascript - Node.js 不执行回调中的最后一个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52166686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com