類中一成員函數功能查詢數據并返回結果集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 關注
- 915 瀏覽
添加回答
舉報
0/150
提交
取消
