Reputation: 1827
I have two function use create() and fromPublisher separately:
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)
}
The output is :
map: MindOrks
DelayExampleMindOrksMindOrks
How ever if I use code:
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)
}
It returns:
DelayExampleFunction0<java.lang.String>
I don't understand why return "DelayExampleFunction0<java.lang.String>", and map function is never called , can anyone explain it ?
Upvotes: 0
Views: 123
Reputation: 144
You have an additional pair of braces "{}" in map
function:
map { s->
{
System.out.println("map")
s+s
}
}
So in this case you're returning function, which returns string. Change this to
.map { s ->
System.out.println("map")
s+s
}
Upvotes: 1