類中一成員函數(shù)功能查詢數(shù)據(jù)并返回結果集class DB 中...... async Query(strSql){
await this._conpool.request()
.query(strSql, (err, result) => {
console.dir(result.recordset); //已查詢到數(shù)據(jù)在此
return result.recordset;
});}調用let db = new DB();db.Query2('select * from sc_Product').then(ret => { console.dir(ret);
res.json(ret);});一直得不到正確的數(shù)據(jù),前面打印看到Query函數(shù)查詢是正確的。請教!
1 回答

楊__羊羊
TA貢獻1943條經(jīng)驗 獲得超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); //已查詢到數(shù)據(jù)在此 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函數(shù)的返回值實際上就是一個promise,所以他倆構成一套以同步的方式書寫異步代碼的語法。
任何異步的操作首先要封裝成promise才能用async/await這種語法糖。
從你的第一個函數(shù)里可以看出來你還不太懂promise的語法使用,建議找相關的博客研究一下
- 1 回答
- 0 關注
- 878 瀏覽
添加回答
舉報
0/150
提交
取消