在不使用创建块的情况下返回RxSwift中的可填写表

Yas*_*sir 4 ios swift rx-swift

我从一个简单的函数返回一个Completable.这不是异步调用,所以我只需要根据条件返回一个成功的完成或错误(在这里使用Rx,这样我可以绑定到其他Rx用法):

func exampleFunc() -> Completable {
    if successful {
        return Completable.just() // What to do here???
    } else {
        return Completable.error(SomeErrorType.someError)
    }
}
Run Code Online (Sandbox Code Playgroud)

错误情况非常容易,但是如果只返回一个成功的完成(不需要.create()它),我就会遇到障碍.

我想我只需要使用Completable的.just().never(),但just在需要的参数,并且never似乎没有触发完成事件.

Yas*_*sir 16

.empty() 是我正在寻找的运营商!

事实证明,我已经混在一起的实现.never(),并.empty()在我的脑袋!

  • .never()不发出任何物品,也不会终止
  • .empty()不发出任何物品但正常终止

所以,上面的示例代码的工作方式如下:

func exampleFunc() -> Completable {
    if successful {
        return Completable.empty()
    } else {
        return Completable.error(SomeErrorType.someError)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是关于empty/throw/never运算符的文档.