ReSwift ActionCreator带有回调/在发送后返回observable

问题描述:

我使用的是ReSwiftRxSwift(没有这些信息,这个问题没有多大意义)。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个问题与此:

  1. 我宁愿用一种标准的方式
  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() 
     }) 
    } 

} 

我不会接受这个答案,因为我还在寻找一个简单/更标准的方式。