как получить конечную точку с различными параметрами в саге приставки - PullRequest
0 голосов
/ 27 марта 2020

Итак, у меня была функция конечной точки

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: Как программно создать несколько вызовов / побочных эффектов для выхода?

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))
  }

, но ответ не определен , я хочу знать, как сделать несколько вызовов с другим параметром.

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Я решаю свой вопрос, выпуская все

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

из этого

https://github.com/redux-saga/redux-saga/issues/1800#issuecomment -468627409

0 голосов
/ 28 марта 2020

api.listAssignedDevices должна быть функцией, которая принимает vehicleId в качестве параметра, выполняет сетевой запрос и возвращает результат. Из вашего примера это просто функция, которая создает URL из vehicleId, но не выполняет сетевой запрос

const listAssignedDevices = vehicleId => fetch(`vehicle/${vehicleId}/devices`)
...