我正在尝试对NodeJ使用SQL查询,但是异步部分确实让我感到困惑。当我打印退货时,它变得“未定义”。我该如何同步呢?
$(".modal-body input").val("")
(function () {
$(".modal").on("hidden.bs.modal", function () {
$(this).removeData();
});
});
谢谢!
答案 0 :(得分:1)
因此,您的答案目前是一个承诺。您必须阅读有关Async和Await的信息,以进行更多的同步JS。
大多数用于NodeJS的JS当前是异步的。下面是示例的重写版本,正确使用了数据库的回调方法。
function callback (err, results, fields) {
if (err) {
console.log(err);
return err;
}
console.log(results, fields);
return results;
};
function SQL_test(blos) {
DB
.query("Select profesor_id from materiador where materia_id = '"+blos+"';", callback);
}
SQL_test(1);
要同步执行相同的操作,您还必须具有外部级别的承诺,否则Async和Await将无法按您希望的方式工作。 javascript没有真正的同步方式来处理此问题,因为它无需等待响应即可执行。
答案 1 :(得分:0)
function sqlTest(blos) {
return new Promise((resolve, reject) => {
DB.query(
`Select profesor_id from materiador where materia_id = '${blos}';`,
(err, results) => {
if (err) return reject(err)
resolve(results)
}
);
}
)
sqlTest(1)
.then(console.log)
.catch(console.error)