You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:57:13