Observable 只发出一个值?
Observable only emits one value?
我是 RxSwift 的新手,我在控制台打印了这段代码:
下一个(第二个值)
完成
但我期待这样的结果:
下一个(第一个值)
下一个(第二个值)
完成
为什么两次订阅都没有反应?我知道在反应中,observable 发出并触发订阅 evert 时间,我们正在观察的变量发生变化,但代码没有显示这一点。我对这个概念有误解吗?
var mutableString = "first value"
mutableString = "second value"
var stringObservable: Observable<String> = Observable.of(mutableString)
stringObservable.subscribe { event in
print(event)
}
当程序运行s时,它一步步遍历每一行代码。所以首先它创建变量 mutableString
并为其分配“第一个值”。然后在下一行中,它将“第二个值”分配给变量。
然后它创建 Observable<String>
类型的变量 stringObservable
并将 Observable.of(mutableString)
分配给它,因为 mutableString 包含“第二个值”,这就是 Observable 内部的值被分配的内容.
请注意,Observable 内部有自己的变量,因此更改 mutableString
的值不会影响 Observable。
为了得到你正在寻找的输出,你需要在创建时传递你希望 Observable 输出的所有值,就像这样:
let stringObservable: Observable<String> = Observable.of("first value", "second value")
stringObservable.subscribe { event in
print(event)
}
另一种选择是创建一个具有输出值的函数的 Observable:
func makeObservable(from array: [String]) -> Observable<String> {
Observable<String>.create { observer in
for each in array {
observer.onNext(each)
}
observer.onCompleted()
return Disposables.create()
}
}
这基本上就是 Observable 的 of(_:)
运算符的实现方式。每次订阅结果 Observable 时,它将 运行 传递给 create
函数的闭包导致它再次发出两个值(和完成的事件)。
我是 RxSwift 的新手,我在控制台打印了这段代码:
下一个(第二个值)
完成
但我期待这样的结果:
下一个(第一个值)
下一个(第二个值)
完成
为什么两次订阅都没有反应?我知道在反应中,observable 发出并触发订阅 evert 时间,我们正在观察的变量发生变化,但代码没有显示这一点。我对这个概念有误解吗?
var mutableString = "first value"
mutableString = "second value"
var stringObservable: Observable<String> = Observable.of(mutableString)
stringObservable.subscribe { event in
print(event)
}
当程序运行s时,它一步步遍历每一行代码。所以首先它创建变量 mutableString
并为其分配“第一个值”。然后在下一行中,它将“第二个值”分配给变量。
然后它创建 Observable<String>
类型的变量 stringObservable
并将 Observable.of(mutableString)
分配给它,因为 mutableString 包含“第二个值”,这就是 Observable 内部的值被分配的内容.
请注意,Observable 内部有自己的变量,因此更改 mutableString
的值不会影响 Observable。
为了得到你正在寻找的输出,你需要在创建时传递你希望 Observable 输出的所有值,就像这样:
let stringObservable: Observable<String> = Observable.of("first value", "second value")
stringObservable.subscribe { event in
print(event)
}
另一种选择是创建一个具有输出值的函数的 Observable:
func makeObservable(from array: [String]) -> Observable<String> {
Observable<String>.create { observer in
for each in array {
observer.onNext(each)
}
observer.onCompleted()
return Disposables.create()
}
}
这基本上就是 Observable 的 of(_:)
运算符的实现方式。每次订阅结果 Observable 时,它将 运行 传递给 create
函数的闭包导致它再次发出两个值(和完成的事件)。