rxjava : operator, async

This commit is contained in:
haerong22
2022-03-17 17:48:06 +09:00
parent f1428b4944
commit 7aa3953c83
2 changed files with 53 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import io.reactivex.rxjava3.core.Flowable;
import java.util.concurrent.TimeUnit;
public class AsyncEx {
private enum State {
ADD, MULTIPLY
}
private static State calcMethod;
public static void main(String[] args) throws InterruptedException {
calcMethod = State.ADD;
Flowable<Long> flowable =
Flowable.interval(300L, TimeUnit.MILLISECONDS)
.take(7)
.scan((sum, data) -> {
if (calcMethod == State.ADD) {
return sum + data;
} else {
return sum * data;
}
});
// 구독 후 받은 데이터 출력
flowable.subscribe(data -> System.out.println("data = " + data));
// Sleep 후 계산법 변경
// Bad case -> 외부의 데이터가 계산에 영향을 주면 안된다.
Thread.sleep(1000);
System.out.println("계산법 변경");
calcMethod = State.MULTIPLY;
Thread.sleep(2000);
}
}

View File

@@ -0,0 +1,14 @@
import io.reactivex.rxjava3.core.Flowable;
public class OperatorEx {
public static void main(String[] args) {
Flowable<Integer> flowable =
Flowable.just(1, 2, 3, 4, 5, 6, 7, 8)
.filter(data -> data % 2 == 0 )
.map(data -> data * 2);
flowable.subscribe(data -> System.out.println("data = " + data));
}
}