简体   繁体   English

如何手动将下一个信号发送到RxSwift中的observable?

[英]How to manually send next signal to a observable in RxSwift?

I create an observable using the following code: 我使用以下代码创建一个observable:

let disposeBag = DisposeBag()

let myJust = { (element: String) -> Observable<String> in
    return Observable.create { observer in
        observer.on(.next(element))
        //observer.on(.completed)
        return Disposables.create()
    }
}

That code comes from RxSwift's sample code. 该代码来自RxSwift的示例代码。

If I create an empty Observable myJust , and later I try to send it a value: 如果我创建一个空的Observable myJust ,稍后我会尝试发送一个值:

myJust("🔴").on(.completed)

I get the following error: 我收到以下错误:

error: value of type 'Observable<String>' has no member 'on'

You can't. 你不能。 Observable s can only be observed. 只能观察到Observable s。 If you want to push values, you'll need a Subject . 如果你想推送价值,你需要一个Subject A Subject is both an Observable and an Observer so it can emit and listen to Events. Subject既是Observable又是Observer因此它可以发出和监听事件。 In RxSwift you can also create a Variable which you can bind an Observable to. 在RxSwift中,您还可以创建一个可以将Observable绑定到的Variable

Quick example for BehaviorSubject : BehaviorSubject快速示例:

let subject = BehaviorSubject(value: 1)
subject.on(.Next(2))
subject.on(.Next(3))
subject.on(.Completed)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM