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

使用fetch时回调函数返回Promise而非实际值的问题求助

问题核心原因

1. func函数未显式返回Promise链

你当前编写的func仅在内部调用了fetch,但没有将fetch生成的Promise实例向外返回,这也是你去掉then内的return后调用func拿到undefined的直接原因。先修复这个基础语法问题:

const func = (callback) => {
  // 新增return,把整个Promise链路向外暴露
  return fetch('https://asdf.json')
    .then(response => {
      return response.json();
    })
    .then(data => {
      return callback(data)
    })
}

2. 异步操作无法在同步上下文直接返回原始值

这是你认知上的核心遗漏点:JS的异步操作结果永远不可能在同步执行的代码中直接拿到原始值,你调用异步函数得到的必然是Promise实例,这个是JS事件循环的运行机制决定的,和回调逻辑、return写法没有关系。
修复基础问题后,你可以通过两种方式拿到callback返回的finalValue:

  • 用then链接收结果:
func(callBack).then(finalValue => {
  // 所有需要用到finalValue的逻辑都要写在这个回调内
  console.log(finalValue)
})
  • 用async/await语法糖简化写法(await只能在async标注的函数内部使用):
const getResult = async () => {
  const finalValue = await func(callBack)
  // 这里可以直接拿到处理后的结果
  console.log(finalValue)
}
getResult()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:27:03