在ReSwift/Redux中处理异步请求的好方法是什么

在ReSwift/Redux中处理异步请求的好方法是什么,swift,redux,reswift,Swift,Redux,Reswift,为了发出异步请求,在这种情况下使用中间件,它会在固定时间后返回一个错误 应用程序状态已正确更新,订户视图控制器将显示错误 然而,在下一个实例中,该订户视图控制器会在状态中找到错误,这实际上是来自上一个请求的错误,并在触发请求之前显示错误消息 如何在ReSwift/Redux中着手处理此案例 贮藏 let store=store( 减速机:, 状态:AppState(), 中间件:[请求中间件] ) 陈述 struct-AppState:StateType{ var isRequestInPro

为了发出异步请求,在这种情况下使用中间件,它会在固定时间后返回一个错误

应用程序状态已正确更新,订户视图控制器将显示错误

然而,在下一个实例中,该订户视图控制器会在状态中找到错误,这实际上是来自上一个请求的错误,并在触发请求之前显示错误消息

如何在ReSwift/Redux中着手处理此案例

贮藏

let store=store(
减速机:,
状态:AppState(),
中间件:[请求中间件]
)
陈述

struct-AppState:StateType{
var isRequestInProgress=false
var结果:结果?
}
行动

struct RequestAction:Action{}
结构ReceiveAction:操作{}
结构错误操作:操作{
let错误:n错误
}
中间件

let requestMiddleware:Middleware={dispatch,getState in
返回{next in
返回{中的操作
开关动作{
情况是请求采取行动:
DispatchQueue.main.asyncAfter(截止日期:.now()+2,执行:{
发送(ErrorAction(错误:NSError(域:“”,代码:-1,用户信息:nil)))
})
违约:
打破
}
返回下一步(操作)
}
}
}
减速器

func程序(操作:操作,状态:AppState?->AppState{
变量状态=状态??AppState()
开关动作{
情况是请求采取行动:
state.isRequestInProgress=true
案例let操作作为错误操作:
state.isRequestInProgress=false
state.result=.failure(action.error)
默认值:中断
}
返回状态
}
应用程序

类ViewController:UIViewController{
@iAction func presentControllerB(\发送方:任意){
guard let viewController=storyboard?.InstanceEviewController(标识符为:“ViewControllerB”)else{
返回
}
存在(viewController,动画:真)
}
}
类ViewControllerB:UIViewController,StoreSubscriber{
覆盖函数视图将出现(uo动画:Bool){
超级。视图将显示(动画)
store.subscribe(自我)
}
覆盖函数视图将消失(u动画:Bool){
商店。取消订阅(自助)
超级。视图将消失(动画)
}
func newState(状态:AppState){
showActivity(state.isRequestInProgress)
开关状态。结果{
案例:无:
打破
案例.一些(.success())):
打破
某些情况下(.failure(let error)):
演示者错误(错误)
驳回(动画:真)
}
}
@iAction func请求(\发送方:任何){
dispatch(RequestAction())
}
私有函数showActivity(show:Bool){}
private func presentError(\错误:错误){
打印(“错误”)
}
}

您找到解决方案了吗?如何使用结果数据返回新状态?您找到解决方案了吗?如何使用结果数据返回新状态??