直接上代码:
const request = require('request-promise-native'); var config = require('../config.js'); async function getAccessToken(){ var raw = new Buffer(config.username + ":" + config.password); const accessToken = await request({ method: 'GET', headers: { 'Authorization': 'Basic ' + raw.toString('base64') }, url: config.ACCESS_TOKEN, json: false }); return accessToken; } module.exports = getAccessToken;
消费代码:
accessTokenService().then(function(oResult){ console.log(oResult); });
单步执行后,调试器执行到第7行时,执行跳过,第16行也没有机会得到单步执行,而是直接跳出了这个getAccessToken的函数。稍等几秒后,断点直接从第16行return关键字处触发。此时这个accessToken的变量包含的是纯粹的Access Token值,而不是被包裹的promise对象。
尽管如此,整个async函数最后返回的是一个promise对象,其包含的access token用promise对象提供的then方法拿到: