1

我正在使用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加载用户的示例中工作

谢谢你的帮助

4

1 回答 1

0

您需要在您的操作函数中处理每个提取。如果你有一个 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

于 2017-07-04T18:37:51.893 回答