Node.js异步GET请求返回Pending Promise问题求助
问题解决:async函数返回Promise的处理
问题原因
async 函数的本质是返回一个 Promise 对象,当你直接用 console.log(getData("OXquiz")) 打印时,异步请求还未完成,所以输出的是处于 <pending> 状态的 Promise,而非请求返回的实际数据。
解决方案
有两种常用方式获取异步函数的结果:
方式1:使用 .then() 处理 Promise
const getData = async (gn) => { let gameData = undefined; gameData = await rq({ method: "GET", url: base_url + "/get_gameData/OXquiz", }).then(function (response) { return response; }); return gameData; }; // 通过.then()获取异步结果并打印 getData("OXquiz").then(result => { console.log(result); });
方式2:用 await 包裹调用(需在 async 环境中)
同时可以简化 getData 函数的代码,去掉多余的 .then(await 本身会解析 Promise 的结果):
const getData = async (gn) => { // 直接用await获取请求结果,无需额外then const gameData = await rq({ method: "GET", url: base_url + "/get_gameData/OXquiz", }); return gameData; }; // 用立即执行的async函数作为执行环境 (async () => { const result = await getData("OXquiz"); console.log(result); })();
说明
两种方式都能让你获取到预期的接口返回数据:
{"status":0,"message":[{"ga_win_point":"100","ga_lose_point":"50","ga_time":"10","ga_max_number":"8"}],"url":""}
内容的提问来源于stack exchange,提问作者ISSAC_TOAST
相关产品推荐
相关产品推荐

