在JavaScript中调用GET接口如何正确获取返回的字符串类型token
问题核心原因
- 所有带
async关键字的异步函数执行后默认返回Promise对象,你调用login()时没有添加await关键字,因此拿到的token变量是Promise实例,而非接口实际返回的字符串。 - Fetch API返回的Response对象不存在
data属性(该属性是第三方请求库axios的特有返回字段),你的接口返回纯字符串格式内容,需要调用Response实例的text()异步方法读取响应内容,不能使用json()方法(该方法仅用于JSON格式的响应解析)。
修正后代码
// 修正login函数,调用text()读取字符串响应 async function login() { let response = await fetch("generate"); // 读取纯字符串格式的响应内容 return await response.text(); } getUserToken: async function () { // 调用异步函数login必须加await var token = await login() console.log("token: "+ token) // 此处可以正常打印接口返回的字符串 return token; }
补充注意事项
如果你后续调用getUserToken方法,同样需要加await关键字,或者使用.then()链式调用获取返回值,示例:
// 调用示例1:在其他async函数内调用 async function otherFunc() { const userToken = await yourObj.getUserToken(); // 后续使用token的逻辑 } // 调用示例2:用then链式调用 yourObj.getUserToken().then(token => { // 后续使用token的逻辑 })
内容的提问来源于stack exchange,提问作者Pavel Petrashov
相关产品推荐
相关产品推荐

