Как читать с конечных точек с помощью redux-auto

Я использую redux-auto, но в "init" (пункт 5) я хочу достичь двух конечных точек Api. Документация не распространяется на этот случай.

Есть пример

export default function (user, payload, stage, result) {

  switch(stage){
    case 'FULFILLED':
    return ?? result.config + result.userData ??
      break;
    case 'REJECTED':
    console.error("problem loading user from server",result)
      break;
    case 'PENDING':
    default :
      break;
  }
  return user;
}

export function action (payload){
  var endpoints = ['//localhost:3000/api/users/507f191e810c19729de860ea',
         'https://api.mysite.com/users/settings/8B76YUTBI']

  return fetch( ? )
}

Как я могу назвать две конечные точки, когда это займет всего 1 обещание?

Я работаю на примере, где они загружают пользователя из API https://github.com/codemeasandwich/redux-auto/tree/master/example

Спасибо за любую помощь

1 ответ

Решение

Вы должны обрабатывать каждый выбор в пределах своей функции действия. Если у вас есть массив URL-адресов, вы можете использовать map для преобразования каждого из них для получения вызовов.

export function action (payload){
  var endpoints = ['//localhost:3000/api/users/507f191e810c19729de860ea',
     'https://api.mysite.com/users/settings/8B76YUTBI']

 return  Promise.all(endpoints.map(url => fetch(url).then(resp => resp.json())))
            .then(([userData,config])=>({userData,config}))

}

Код выше

  1. Сопоставьте строку конечных точек для создания вызовов Ajax
  2. Вызовите json по результатам каждой выборки
  3. Затем объедините все ответы, используя Promise.all
  4. Разрушить массив на 2 переменные
  5. Вернуть новый объект с 2 свойствами

в результате у тебя редукционная функция теперь будет иметь userData, config

Другие вопросы по тегам