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

使用.map调用API仅返回payload,如何获取接口真实返回数据

问题核心原因
  • API调用属于异步操作,你代码中使用的call如果是Redux Saga的API,返回的是Effect描述对象;如果是普通异步请求,返回的是Promise实例,二者都不是接口的真实返回结果。直接在map中return的话,最终得到的是包含多个异步占位对象的数组,自然无法拿到真实返回数据。
解决方案

分两种常用场景处理:

场景1:普通JS/TS异步环境(使用fetch/axios等返回Promise的请求库)

用Promise.all等待所有异步请求完成,即可拿到全部返回结果,代码示例:

const requestURL = `https://jsonplaceholder.typicode.com/posts/1/comments`;
// 先生成所有请求的Promise数组
const requestPromises = apis1.map(ap => {
  return request(requestURL + ap.etc)
})
// 等待所有请求执行完成
const gg = await Promise.all(requestPromises)
console.log(gg) // 此处输出所有接口真实返回数据组成的数组

注意:上述await操作需要放在async函数内部才能正常运行

场景2:Redux Saga环境(即你代码中使用call Effect的场景)

需要配合Saga的all Effect并行等待所有call请求执行完成,代码示例:

import { call, all } from 'redux-saga/effects'

function* yourSaga() {
  const requestURL = `https://jsonplaceholder.typicode.com/posts/1/comments`;
  const requestEffects = apis1.map(ap => {
    return call(request, requestURL + ap.etc)
  })
  // 等待所有call执行完成
  const gg = yield all(requestEffects)
  console.log(gg) // 此处输出所有接口真实返回数据组成的数组
}
额外注意点
  • 如果你需要实现单个请求失败不影响其他请求的效果,可以给每个请求外层包一层catch,返回自定义错误标识,避免Promise.all/all触发全局熔断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:03