鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML  Office/ await調(diào)用promise碰到一些問(wèn)題,煩請(qǐng)看一看

await調(diào)用promise碰到一些問(wèn)題,煩請(qǐng)看一看

國(guó)際慣例,先貼上代碼

let awaitToken = function (options){
    return new Promise((resolve, reject) => {
        request(options, function (err, res, body) {
            if (res) {
                resolve(JSON.parse(body));
            } else {
                reject(err);
            }
        });
    })
}

let getAccessToken = function async (req,res,next) {
    let queryParams = {
        'grant_type': 'client_credential',
        'appid': config.appId,
        'secret': config.appSecret
    };

    let wxGetAccessTokenBaseUrl = 'https://api.weixin.qq.com/cgi-bin/token?' + qs.stringify(queryParams);
    let options = {
        method: 'GET',
        url: wxGetAccessTokenBaseUrl
    };

    let result = await awaitToken(options)

    if (result){
        res.send(result)
    }else{
        res.send('something err')
    }
    
};

運(yùn)行 這段代碼運(yùn)行不通,在let result = await awaitToken(options) 處報(bào)錯(cuò),報(bào)錯(cuò)如下圖

圖片描述

上網(wǎng)查了一下,這個(gè)報(bào)錯(cuò)是語(yǔ)法錯(cuò)誤,難道是沒(méi)有找到awaitToken這個(gè)方法么,我覺(jué)得不太應(yīng)該啊,還是說(shuō)await沒(méi)有接收到awaitToken返回回來(lái)的參數(shù)?還是說(shuō)我這個(gè)async-await的使用方法錯(cuò)誤???試了半天試不出來(lái)個(gè)結(jié)果,煩請(qǐng)幫忙看下,不勝感激~

node環(huán)境 7.6.0

回答
編輯回答
吢涼

async和function的位置換一下
async function

2018年8月31日 20:29
編輯回答
兔囡囡

注意function async(){}async function(){}

2017年7月31日 02:06
編輯回答
吢丕

錯(cuò)誤的原因是 函數(shù)awaitToken 沒(méi)有定義成asyncawait調(diào)用的函數(shù)必須是async的;

另外就像樓上們說(shuō)的 getAccessToken 函數(shù)定義為async錯(cuò)了

2017年11月8日 21:56
編輯回答
失魂人
let getAccessToken = async function (req,res,next) {
}

async反了的話(huà)跟async/await沒(méi)關(guān)系了,相當(dāng)于定義了一個(gè)名字為async的函數(shù)

2017年3月24日 12:10