类中一成员函数功能查询数据并返回结果集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贡献1860条经验 获得超8个赞
用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的语法使用
添加回答
举报
0/150
提交
取消