类中一成员函数功能查询数据并返回结果集class DB 中...... async Query(strSql){
await this._conpool.request()
.query(strSql, (err, result) => {
console.dir(result.recordset); //已查询到数据在此
return result.recordset;
});}调用let db = new DB();db.Query2('select * from sc_Product').then(ret => { console.dir(ret);
res.json(ret);});一直得不到正确的数据,前面打印看到Query函数查询是正确的。请教!
1 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
用promise封装,你这个写法有点不伦不类,(顺便一提 async 是ES7)
Query(strSql) { return new Promise((resolve,reject)=>{ this._conpool.request() .query(strSql, (err, result) => { if(err){ //出错 reject(err); }else{ console.dir(result.recordset); //已查询到数据在此 resolve(result.recordset); } }); }); }
调用:
let db = new DB(); db.Query('select * from sc_Product').then(ret => { console.dir(ret); res.json(ret); }).catch(e=>{ //error });
或者
async function(){ let db = new DB(); try{ let ret =await db.Query('select * from sc_Product'); console.dir(ret); res.json(ret); }catch(e){ //error } }
await
用来wait的是一个promise(如果非promise会直接返回结果),而一个async函数的返回值实际上就是一个promise,所以他俩构成一套以同步的方式书写异步代码的语法。
任何异步的操作首先要封装成promise才能用async/await这种语法糖。
从你的第一个函数里可以看出来你还不太懂promise的语法使用,建议找相关的博客研究一下
- 1 回答
- 0 关注
- 839 浏览
添加回答
举报
0/150
提交
取消