2017-10-01 5 views
1

私はReSwiftRxSwiftを使用しています(その情報はあまり意味がありません)。ReSwift ActionCreatorコールバックが返ってきました。返信後に観測可能

ReSwiftにアクションクリエータをディスパッチし、処理が終了した(つまり、アクションを完了したアクションと、アクションクリエータ内で発生する可能性のあるすべての内部リクエスト)私もこのコールバックを必要とする

  1. 私はむしろ
  2. 標準的な方法を使用したい:

    私はこれを達成するための一つの方法知っていますか:

    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オブジェクトです。

第二の理由を説明するために、私のようなものが必要です:私は喜ばように、私はobservable変数を使用することができます

let observable = store.dispatch(myActionCreator)

を。

確かに、自分自身でログインしてStoreの拡張子としてstore.dispatchReturningObservableのようなものを実装することができますが、もっと簡単な方法を探しています。

1つはありますか?

答えて

0

私が作ってみた最善の解決策は、このでした:私はまだ単純/より標準的な方法を探していますので、私は、この答えを受け入れることはありません

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() 
     }) 
    } 

} 

関連する問題