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

如何让getData函数通过fetch API返回实际数据而非Promise对象?

问题解决:getData()返回Promise而非实际数据

核心原因

fetch 是异步API,本身返回Promise对象,你的getData函数里的then链式调用最终还是返回Promise,所以直接调用getData()得到的必然是Promise,而非实际数据——JS里异步操作无法同步返回结果。

解决方案1:使用async/await(更直观)

把getData改成async函数,然后在异步环境中用await获取实际数据:

async function getData() {
  const response = await fetch('//some api url');
  const data = await response.json();
  return data;
}

// 必须在async函数内使用await
async function init() {
  const actualData = await getData();
  console.log(actualData); // 这里就是你要的实际数据
}
init();

// 模块导出建议:导出函数而非直接导出Promise结果
export async function fetchData() {
  return await getData();
}

解决方案2:延续.then()链式调用

如果不想用async/await,就在调用getData时通过then接收结果:

function getData() {
  // 注意要return整个fetch链式调用,否则函数默认返回undefined
  return fetch('//some api url')
    .then(response => response.json())
    .then(data => data);
}

// 调用时通过then获取实际数据
getData().then(actualData => {
  console.log(actualData);
  // 在这里处理数据,比如赋值、渲染等
});

// 模块导出函数,让调用方自行处理异步逻辑
export { getData };

关键提醒

永远不要尝试“同步获取异步数据”,这违背JS单线程异步机制,会导致页面阻塞或逻辑错误。所有依赖异步数据的操作,都要放在then回调里或者await之后。

内容的提问来源于stack exchange,提问作者mathsnerd22

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:48:15