ReSwift ActionCreator带有回调/在发送后返回observable
问题描述:
我使用的是ReSwift和RxSwift(没有这些信息,这个问题没有多大意义)。ReSwift ActionCreator带有回调/在发送后返回observable
在ReSwift中有没有一种标准的派发动作创建器的方法,并且在完成处理后发生了一些事情(即,完成处理动作和可能发生在动作创建器内部的所有内部请求)?
我知道要实现这一目标的一种方法:
func myActionCreator(_ callback:() -> Void) -> (state: AppState, store: Store<AppState>) -> Action? {
return { state, store in
_ = someRequest().subscribe(onNext: { _ in
callback()
})
return nil
}
}
store.dispatch(myActionCreator({
// callback
}))
但也有2个问题与此:
- 我宁愿用一种标准的方式
- 我也需要这个回调作为
Observable
对象。
为了解释第二个原因,我需要的是这样的:
let observable = store.dispatch(myActionCreator)
这样我就可以使用observable
变量作为我请。
当然,我可以实现所有登录自己,并有一个像store.dispatchReturningObservable
作为Store
的扩展,但我正在寻找一个更简单的方法。
有没有?
答
最好的解决方案我已经出来是这样的:
extension Store {
func dispatchObservable(_ callbackActionCreator: @escaping (@escaping() -> Void) -> (State, Store<State>) -> Action?) -> Observable<State> {
return Observable.create({ observer in
let actionCreator = callbackActionCreator({
observer.onNext(self.state)
observer.onCompleted()
})
self.dispatch(actionCreator)
return Disposables.create()
})
}
}
我不会接受这个答案,因为我还在寻找一个简单/更标准的方式。