gpt4 book ai didi

javascript - 函数返回未在控制台中打印

转载 作者:行者123 更新时间:2023-12-03 12:18:17 25 4
gpt4 key购买 nike

我在 node.js 中编写了这段代码,但遇到了问题。

async function CheckearWhitelist(id) {
const oracheck = ora("Checkeando en la whitelist...").start();
con.connect(function (err) {
if (err) {
oracheck.fail(
"Ha habido un fallo al conectarse a MySQL - Comprueba la conexión"
);
}
con.query(
`SELECT * FROM \`whatsapp\`.\`whitelist\` WHERE \`contacto\` = '${id}'`,
function (err, result, fields) {
if (err) {
oracheck.fail("Fallo de MySQL");
} else if (result == []) {
oracheck.warn("Usuario no encontrado en la whitelist");
return false
} else {
date = new Date();
horas_fecha = date.getHours();
minutos = date.getMinutes();
hora = `${horas_fecha}.${minutos}`;

hora_desb = result[0].hora_desbloqueo;
if (hora_desb == 0) {
oracheck.info("El contacto está en la whitelist indefinidamente");
return true
} else if (hora_desb <= hora) {
oracheck.warn("Usuario no encontrado en la whitelist");
return false
} else {
oracheck.succeed("Resultado Encontrado: ");
return true
}
}
}
);
});
}

CheckearWhitelist("34676654601@c.us").then((value) => console.log(value));

问题是,如果我制作 console.log(true/false) 而不是返回,它会完美地工作。但是当我返回 true/false,并在调用函数时生成 console.log 时,它不起作用。我希望有一个人可以帮助我。谢谢

最佳答案

问题是您所拥有的异步函数的任何返回值都不会像您期望的那样返回(它将被丢弃或由库使用 - 但不是您的代码)

您应该改为在顶层返回新的 Promise 对象,并在您想要“返回”值时在回调中解析它。

function CheckearWhitelist(id) {
return new Promise((resolve, reject) => {
const oracheck = ora("Checkeando en la whitelist...").start();
con.connect(function(err) {
if (err) {
oracheck.fail(
"Ha habido un fallo al conectarse a MySQL - Comprueba la conexión"
);
}
con.query(
`SELECT * FROM \`whatsapp\`.\`whitelist\` WHERE \`contacto\` = '${id}'`,
function(err, result, fields) {
if (err) {
oracheck.fail("Fallo de MySQL");
} else if (result == []) {
oracheck.warn("Usuario no encontrado en la whitelist");
resolve(false)
} else {
date = new Date();
horas_fecha = date.getHours();
minutos = date.getMinutes();
hora = `${horas_fecha}.${minutos}`;

hora_desb = result[0].hora_desbloqueo;
if (hora_desb == 0) {
oracheck.info("El contacto está en la whitelist indefinidamente");
resolve(true)
} else if (hora_desb <= hora) {
oracheck.warn("Usuario no encontrado en la whitelist");
resolve(false)
} else {
oracheck.succeed("Resultado Encontrado: ");
resolve(true)
}
}
}
);
});
})
}

CheckearWhitelist("34676654601@c.us").then((value) => console.log(value));

关于javascript - 函数返回未在控制台中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65654201/

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