如何防止可观察对象终止

时间:2018-10-09 10:06:48

标签: swift rx-swift

if (discount == null)
   throw new ArgumentException("Discount could not be loaded");

返回obervable.empty()时,它将终止Observable。

4 个答案:

答案 0 :(得分:0)

您需要使用单例来管理代码。从单例课程中使用

答案 1 :(得分:0)

在这种情况下,您可以避免返回可观察值:

let nextPageRequest = loading.asObservable()

    .sample(loadNextPageTrigger)

    .flatMap { [unowned self] loading -> Observable<Int> in 

            return Observable<Int>.create { [unowned self] observer in

                    print("self.pageIndex called",self.offset)

                    self.offset += 20

                    observer.onNext(self.offset)

                    observer.onCompleted()

                    return Disposables.create()

            }


}

如果您需要该表达式的状态,也可以通过它:

让nextPageRequest = loading.asObservable()

    .sample(loadNextPageTrigger)

    .flatMap { [unowned self] loading -> Observable<(Bool, Int)> in 

            return Observable<(Bool, Int)>.create { [unowned self] observer in

                    print("self.pageIndex called",self.offset)

                    self.offset += 20

                    let status = loading || self.pageStatus != true || self.netStatus != true

                    observer.onNext(status, self.offset)

                    observer.onCompleted()

                    return Disposables.create()

            }


}

答案 2 :(得分:0)

  1. 根据RxSwift v4.x弃用了变量
  2. 当某些东西在iOS中意外终止时,通常是因为它被释放了。如果您使用的是诸如Swinject之类的DI,请声明包含可观察对象且包含容器范围的类:'container.register(MyClass.self){_ in MyClass()} .inObjectScope(.container)'

答案 3 :(得分:0)

您遇到的问题与您发布的代码无关。 flatMap不允许.completed事件对其进行转义,这就是empty()构造函数发出的全部信息。

换句话说,返回.empty()不是 您可观察的对象终止的原因。