RxJava:通过将事件源嵌套在Observable.create()中,而不是存储ObservableEmmiter,将回调转换为反应流
每当人们谈论将回调转换为RxJava风格时,我在这里或其他地方看到的所有答案都建议如下嵌套回调:RxJava:通过将事件源嵌套在Observable.create()中,而不是存储ObservableEmmiter,将回调转换为反应流,java,android,rx-java,Java,Android,Rx Java,每当人们谈论将回调转换为RxJava风格时,我在这里或其他地方看到的所有答案都建议如下嵌套回调: Observable.create(emitter -> { button.setOnClickListner(View.OnClickListner(){ void onClick(...) { emitter.onNext(value); }
Observable.create(emitter -> {
button.setOnClickListner(View.OnClickListner(){
void onClick(...) {
emitter.onNext(value);
}
}})
但是下面的也可以,但是从来没有提到过
public class Something{
static ObservableEmitter<Object> myemitter;
public static void main(String[] args) {
doS();
myemitter.onNext(12);
}
static void doS() {
Observable.create(emitter -> {
myemitter = emitter;
}).map( v ->{
System.out.println("this is Map function");
return v ;
}).subscribe(v -> {
System.out.println(v);
});
}
}
公共类{
静态可观察发射器;
公共静态void main(字符串[]args){
doS();
myemitter.onNext(12);
}
静态void doS(){
可观察。创建(发射器->{
迈米特=发射器;
}).map(v->{
System.out.println(“这是映射函数”);
返回v;
}).订阅(v->{
系统输出打印Ln(v);
});
}
}
第二个例子的意义在于,一个特定的倾听者不再被反应链所束缚。这意味着我可以将ObservieMitter传递给任何侦听器,然后调用.onNext()
像第二种方法那样做是否有任何不可预见的副作用或负面影响?它不是线程安全的,
myMitter
是静态的,这意味着您将有很多浮动错误。这里的Mitter是静态变量,因为这里的示例就是我在编写时看到的。所以,我想线程安全已经足够了。考虑将注释添加为答案。