await调用promise碰到一些问题,烦请看一看

国际惯例,先贴上代码

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')
    }
    
};

运行 这段代码运行不通,在let result = await awaitToken(options) 处报错,报错如下图

图片描述

上网查了一下,这个报错是语法错误,难道是没有找到awaitToken这个方法么,我觉得不太应该啊,还是说await没有接收到awaitToken返回回来的参数?还是说我这个async-await的使用方法错误???试了半天试不出来个结果,烦请帮忙看下,不胜感激~

node环境 7.6.0

阅读 3.4k
4 个回答

async和function的位置换一下
async function

let getAccessToken = async function (req,res,next) {
}

async反了的话跟async/await没关系了,相当于定义了一个名字为async的函数

错误的原因是 函数awaitToken 没有定义成asyncawait调用的函数必须是async的;

另外就像楼上们说的 getAccessToken 函数定义为async错了

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题