Observable.create 对比 Observable.fromPublisher
Observable.create vs Observable.fromPublisher
我有两个函数分别使用 create() 和 fromPublisher:
Observable.create<String> { emitter ->
emitter.onNext("MindOrks")
emitter.onComplete()
}.map { s->
System.out.println("map: "+s)
s+s
} .delay(2, TimeUnit.SECONDS)
.subscribe {
System.out.println("DelayExample"+ it)
}
输出为:
map: MindOrks
DelayExampleMindOrksMindOrks
如果我使用代码怎么办:
Observable.fromPublisher<String>{publisher->
publisher.onNext("MindOrks")
publisher.onComplete()
}.map { s->{
System.out.println("map")
s+s
} }.delay(2, TimeUnit.SECONDS)
.subscribe {
System.out.println("DelayExample"+ it)
}
它returns:
DelayExampleFunction0<java.lang.String>
我不明白为什么 return“DelayExampleFunction0”,并且从未调用过映射函数,谁能解释一下?
您在 map
函数中多了一对大括号“{}”:
map { s->
{
System.out.println("map")
s+s
}
}
所以在这种情况下,您返回的是 returns 字符串的函数。
将其更改为
.map { s ->
System.out.println("map")
s+s
}
我有两个函数分别使用 create() 和 fromPublisher:
Observable.create<String> { emitter ->
emitter.onNext("MindOrks")
emitter.onComplete()
}.map { s->
System.out.println("map: "+s)
s+s
} .delay(2, TimeUnit.SECONDS)
.subscribe {
System.out.println("DelayExample"+ it)
}
输出为:
map: MindOrks
DelayExampleMindOrksMindOrks
如果我使用代码怎么办:
Observable.fromPublisher<String>{publisher->
publisher.onNext("MindOrks")
publisher.onComplete()
}.map { s->{
System.out.println("map")
s+s
} }.delay(2, TimeUnit.SECONDS)
.subscribe {
System.out.println("DelayExample"+ it)
}
它returns:
DelayExampleFunction0<java.lang.String>
我不明白为什么 return“DelayExampleFunction0
您在 map
函数中多了一对大括号“{}”:
map { s->
{
System.out.println("map")
s+s
}
}
所以在这种情况下,您返回的是 returns 字符串的函数。 将其更改为
.map { s ->
System.out.println("map")
s+s
}