为了账号安全,请及时绑定邮箱和手机立即绑定

redux中的异步问题?

redux中的异步问题?

慕雪6442864 2019-01-27 09:05:46
在redux的异步场景中遇到这个问题。场景是这样:我需要通过 redux-thunk 来发两个 api 请求。但是第一个请求的返回数据正是第二个请求的请求数据,所以必须等第一个请求返回了才能发起第二个请求。怎么解决这样的问题?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

感觉这种情况可以直接使用 promise-middleware 中间件,可以直接这样写:

// 假设你有两个 action 发送请求:fetchInfo, fetchDetail


dispatch(fetchInfo())

    .then((action) => {

        // action.payload 就是 fetchInfo 的请求数据

        return dispatch(fetchDetail());

    })

    .then((action) => {

        // action.payload 就是 fetchDetail 的请求数据

    })


查看完整回答
反对 回复 2019-03-16
?
动漫人物

TA贡献1815条经验 获得超10个赞

function createTodo (todo) {

  return (dispatch) => {

    return fetch('/todos/create', {})

    .then(result => {

      dispatch({type: 'CREATED', result})

    })

  }

}


function getTodo (id) {

  return (dispatch) => {

    return fetch(`/todos/${id}`, {})

    .then(result => {

      dispatch({type: 'LOADED', result})

    })

  }

}

也可以createTodo().then(if(state==='成功!') getTodo())

由于then无论成功失败都会执行。fetch 尿性。所以dispatch后需要判断你改变的state满足了需求,说明createTodo 执行成功了,就执行下一个

这种情况当两个方法不在同一文件中,或者还会跟随者其他的操作的时候用


查看完整回答
反对 回复 2019-03-16
  • 3 回答
  • 0 关注
  • 890 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信