第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ES6 異步函數(shù)返值問題

ES6 異步函數(shù)返值問題

呼喚遠方 2018-08-18 22:01:19
類中一成員函數(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的語法使用,建議找相關的博客研究一下


查看完整回答
反對 回復 2018-08-19
  • 1 回答
  • 0 關注
  • 878 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號