完成可能
Completableは、Observableの特別なバージョンです。複数の要素を出力できるObservableとは異なり、完了したイベントまたはエラーイベントのみを生成できます。
- ゼロ要素を放出
- 完了したイベントまたはエラーイベントを発行する
- 追加の効果を共有しない
Completableは、タスクの完了のみを気にし、タスクの戻り値を気にする必要がない状況に適しています。Observableに似ています。
- Completableを作成する方法
Completableの作成は、Observableの作成と非常に似ています。
func cacheLocally() -> Completable {
return Completable.create { completable in
// Store some data locally
...
... guard success else { completable(.error(CacheError.failedCaching)) return Disposables.create {} } completable(.completed) return Disposables.create {} } }
次のようにCompletableを使用できます。
cacheLocally()
.subscribe(onCompleted: {
print("Completed with no error")
}, onError: { error in
print("Completed with an error: \(error.localizedDescription)") }) .disposed(by: disposeBag)
この通話も使用できます
以使用如下方式使用这个 Completable:
cacheLocally()
.subscribe { completable in
switch completable { case .completed: print("保存成功!") case .error(let error): print("保存失败: \(error.localizedDescription)") } } .disposed(by: disposeBag)
サブスクリプションは、CompletableEventの列挙を提供します。
public enum CompletableEvent {
case error(Swift.Error)
case completed
}
- completed-完了したイベントを生成します
- エラーを発生させる
多分
たぶん、Observableの特別なバージョンでしょう。SingleとCompletableの間で、1つのエレメントのみを発行するか、completedイベントを生成するか、エラーイベントを生成できます。
- 要素、完了したイベント、またはエラーイベントを発行する
- 追加の効果を共有しない
要素を放出する必要があり、放出する必要がない場合は、Maybeを使用できます。
- Maybeの作成方法Maybeの作成は、Observableの作成と非常に似ています。
func generateString() -> Maybe<String> {
return Maybe<String>.create { maybe in
maybe(.success("RxSwift"))
// OR maybe(.completed) // OR maybe(.error(error)) return Disposables.create {} } }
多分このように使用できます:
generateString()
.subscribe(onSuccess: { element in
print("Completed with element \(element)")
}, onError: { error in
print("Completed with an error \(error.localizedDescription)") }, onCompleted: { print("Completed with no element") }) .disposed(by: disposeBag)
Observableで.asMaybe()メソッドを呼び出して、それをMaybeに変換することもできます。