猿问

如何在redux saga中获取具有不同参数的端点

所以我有终点功能


import AppConfig from "../config/app-config";


const create = (baseURL = AppConfig.apiUrl) => {

  const api = apisauce.create({

    baseURL,

    headers: {

      "Cache-Control": "no-cache"

    },

    timeout: 10000

  });


const listAssignedDevices = vehicleId =>

    api.get(`api/fleet/vehicle/${vehicleId}/devices`) 


return listAssignedDevices

export default create


已编辑


我尝试使用数组调用该端点作为 redux-saga 中的参数列表


我已经尝试使用像redux-saga 中的 map 函数:如何以编程方式创建多个调用/副作用以获得收益?


const listVehicleId = [1,2,3,4,5,6,7]


const response = yield listVehicleId.map(vehicleId => call(api.listAssignedDevices, vehicleId)

console.log(response)


if (response.ok && response.headers['content-type'].indexOf('json') !== -1) {

    console.tron.log('AturBcak - OK')

    yield put(AturBcakActions.aturBcakMultipleSuccess(response.data))

  }

但响应未定义,我想知道如何使用不同的参数进行多次调用。


Cats萌萌
浏览 135回答 2
2回答

动漫人物

我通过 yield all 来解决我的问题const response = yield all(    listVehicleId.map(vehicleId =>       call(api.listAssignedDevices, vehicleId)      )  )由此https://github.com/redux-saga/redux-saga/issues/1800#issuecomment-468627409

倚天杖

api.listAssignedDevices必须是一个以vehicleId参数为参数,执行网络请求并返回结果的函数。从您的示例中,它只是一个从 vehicleId 构造 url 但不执行网络请求的函数const listAssignedDevices = vehicleId => fetch(`vehicle/${vehicleId}/devices`)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答