Javascript 在redux传奇中继续之前等待多个操作
假设您有一个可以获取项目列表的传奇故事。对于每个获取的项目,您还需要一个伴随对象。 下面的伪代码从API获取一些用户,每个用户都会发出一个新的动作来获取她的化身Javascript 在redux传奇中继续之前等待多个操作,javascript,redux-saga,saga,take,es6-generator,Javascript,Redux Saga,Saga,Take,Es6 Generator,假设您有一个可以获取项目列表的传奇故事。对于每个获取的项目,您还需要一个伴随对象。 下面的伪代码从API获取一些用户,每个用户都会发出一个新的动作来获取她的化身 函数*fetchUsers(){ 试一试{ const users=yield call(getUsers) 交出全部( map({id}=>id).map(id=>put(fetchUserAvatar(id))) ) 收益put('FETCH\u USER\u SUCCESS') }捕获(e){ 屈服put('FETCH\u USE
函数*fetchUsers(){
试一试{
const users=yield call(getUsers)
交出全部(
map({id}=>id).map(id=>put(fetchUserAvatar(id)))
)
收益put('FETCH\u USER\u SUCCESS')
}捕获(e){
屈服put('FETCH\u USER\u FAILURE')
}
}
我想发出FETCH\u USER\u SUCCESS
仅当所有化身都已被获取时,即fetchUserAvatar
saga发出FETCH\u USER\u AVATAR\u SUCCESS
或FETCH\u USER\u AVATAR\u失败
因此,我实施了以下解决方案:
函数*fetchUsers(){
试一试{
const users=yield call(getUsers)
交出全部(
map({id}=>id).map(id=>put(fetchUserAvatar(id)))
)
for(设i=0;i
我觉得有点难看。是否有任何效果,例如执行或类似的技术,我可以在继续之前等待发出N个操作?
或者对于上述问题有其他解决方案吗?我可以为您写一个答案,基本上您需要通过id
与进行比较,以采取正确的行动。您在哪里执行您通过fetchUserAvatar(id)
执行的操作?您将数据发送到存储的位置?我会在FETCH\u USER\u SUCCESS
中思考,但您没有显示任何有效负载。我们在这里的目标仅仅是获取用户和化身,还是用户是一个被忽视的中间人,我们只关心化身?@LindaPaiste问:你在哪里采取你通过获取用户化身(id)
放置的动作?答:假设第二个传奇正在执行获取用户\u化身\u请求
操作Q:您在哪里将数据发送到商店?我会在FETCH\u USER\u SUCCESS
中思考,但您没有显示任何有效负载。A:对。假设有效负载在FETCH\u USER\u SUCCESS
action上发送,我可以为您写一个答案,基本上您需要通过id
比较采取正确的操作。您在哪里执行您通过fetchUserAvatar(id)
执行的操作?您将数据发送到存储的位置?我会在FETCH\u USER\u SUCCESS
中思考,但您没有显示任何有效负载。我们在这里的目标仅仅是获取用户和化身,还是用户是一个被忽视的中间人,我们只关心化身?@LindaPaiste问:你在哪里采取你通过获取用户化身(id)
放置的动作?答:假设第二个传奇正在执行获取用户\u化身\u请求
操作Q:您在哪里将数据发送到商店?我会在FETCH\u USER\u SUCCESS
中思考,但您没有显示任何有效负载。A:对。假设有效负载在FETCH\u USER\u SUCCESS
操作上发送