В чем разница между использованием и не использование функции обратного вызова в следующем конкретном примере? ⇐ Javascript
-
Anonymous
В чем разница между использованием и не использование функции обратного вызова в следующем конкретном примере?
Определение о функции DB заключается в следующем, я буду использовать db.async.all () < /code> позже: < /p>
const sqlite3 = require("sqlite3").verbose();
const path = require("path");
var db = new sqlite3.Database(path.join(__dirname,"blog.sqlite3"));
db.async = {};
db.async.all = (sql,params)=>{
return new Promise((resolve,reject)=>{
db.all(sql,params,(err,rows)=>{
resolve({err,rows});
});
});
}
< /code>
< /li>
Первый способ его использовать: < /p>
router.post("/login",async(req,res)=>{
let { account,password } = req.body;
let {err,rows} = await db.async.all("select * from `admin` where `account` = ? AND `password` = ?",[account,password]);
console.log(err);
console.log(rows);
}
< /code>
< /li>
Второй способ его использовать: < /p>
router.post("/login",(req,res)=>{
let { account,password } = req.body;
db.async.all("select * from `admin` where `account` = ? AND `password` = ?",[account,password],(err,rows)=>{
console.log(err);
console.log(rows);
});
< /code>
< /li>
Результат тестирования: < /p>
Когда я использую первый метод, программа может вывести правильно , но когда я использую второй метод, программа продолжает давать мне подсказку «Загрузка». < /p>
< /li>
< /ol>
На мой взгляд Второй способ просто использовать функцию обратного вызова, и он должен иметь тот же выход, сравниваемый с первым способом. Так почему же у них нет такого же результата?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-the-fo
Определение о функции DB заключается в следующем, я буду использовать db.async.all () < /code> позже: < /p>
const sqlite3 = require("sqlite3").verbose();
const path = require("path");
var db = new sqlite3.Database(path.join(__dirname,"blog.sqlite3"));
db.async = {};
db.async.all = (sql,params)=>{
return new Promise((resolve,reject)=>{
db.all(sql,params,(err,rows)=>{
resolve({err,rows});
});
});
}
< /code>
< /li>
Первый способ его использовать: < /p>
router.post("/login",async(req,res)=>{
let { account,password } = req.body;
let {err,rows} = await db.async.all("select * from `admin` where `account` = ? AND `password` = ?",[account,password]);
console.log(err);
console.log(rows);
}
< /code>
< /li>
Второй способ его использовать: < /p>
router.post("/login",(req,res)=>{
let { account,password } = req.body;
db.async.all("select * from `admin` where `account` = ? AND `password` = ?",[account,password],(err,rows)=>{
console.log(err);
console.log(rows);
});
< /code>
< /li>
Результат тестирования: < /p>
Когда я использую первый метод, программа может вывести правильно , но когда я использую второй метод, программа продолжает давать мне подсказку «Загрузка». < /p>
< /li>
< /ol>
На мой взгляд Второй способ просто использовать функцию обратного вызова, и он должен иметь тот же выход, сравниваемый с первым способом. Так почему же у них нет такого же результата?
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-the-fo
Мобильная версия