gpt4 book ai didi

swift - ReSwift ActionCreator 在分派(dispatch)后带有回调/返回可观察对象

转载 作者:行者123 更新时间:2023-11-28 09:24:34 24 4
gpt4 key购买 nike

我正在使用 ReSwiftRxSwift (如果没有这些信息,这个问题就没有多大意义)。

是否有一种标准方法可以在 ReSwift 中分派(dispatch) action creator 并在它完成处理后发生一些事情(即,完成处理操作和可能在 action creator 内部发生的所有内部请求)?

我确实知道实现此目的的一种方法:

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

但这有两个问题:

  1. 我宁愿使用标准方式
  2. 我还需要这个回调作为一个 Observable 对象。

为了解释第二个原因,我需要这样的东西:

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

}

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

关于swift - ReSwift ActionCreator 在分派(dispatch)后带有回调/返回可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46508863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com