|
nodejs 中 如何使用async-await 请求数据,写了一个DEMO,
可供参考: async function getProductData(request,response){
var user = request.session.user;
var head = request.session.headImage;
var id = request.query.id; // 商品id
if(!id){
response.send("<script>alert('请选择对应的商品');location.href='index.html'</script>")
}
var productInfo = await getProduct(id);
var colorList = await getGuiColor(id);
var sizeList = await getGuiSize(id);
response.render("productDetail",{user:user,head:head,product:productInfo,colorList:colorList,sizeList:sizeList});
}注:1. async与await要结合使用 2. await后面的方法要返回一个promise对象 代码如下: function getProduct(id){
return new Promise((resolve,reject)=>{
let sql = `
SELECT *
FROM product JOIN productrule ON product.id = productrule.productId
WHERE product.id = ? AND productrule.isDefault = 1 AND
product.state = 1 AND product.DelState = 1
LIMIT 1
`;
db.query(sql,[id],function(err,data){
if(err){
reject(err);
}else{
resolve(data);
}
})
})
}
function getGuiColor(id){
return new Promise((resolve,reject)=>{
let sql = `SELECT DISTINCT color FROM productrule WHERE productId=?`;
db.query(sql,[id],function(err,data){
if(err){
reject(err);
}else{
resolve(data);
}
})
})
}
function getGuiSize(id){
return new Promise((resolve,reject)=>{
let sql = `SELECT DISTINCT size FROM productrule WHERE productId=?`;
db.query(sql,[id],function(err,data){
if(err){
reject(err);
}else{
resolve(data);
}
})
})
} 总结:async与await只是让promise使用更简单,没有替换promise |
|
|