Grałem z operatorem Java Flow offer
, ale po przeczytaniu dokumentacji i wykonaniu testu nie rozumiem.Java 9 Behavior of Flow SubmissionPublisher offer method
Oto moja próba
@Test
public void offer() throws InterruptedException {
//Create Publisher for expected items Strings
SubmissionPublisher<String> publisher = new SubmissionPublisher<>();
//Register Subscriber
publisher.subscribe(new CustomSubscriber<>());
publisher.subscribe(new CustomSubscriber<>());
publisher.subscribe(new CustomSubscriber<>());
publisher.offer("item", (subscriber, value) -> false);
Thread.sleep(500);
}
Operator oferta odebrać element być emitowane i funkcję BiPredicate i ile mi zrozumieć czytając dokumentację, tylko w przypadku, gdy funkcja predykat jest prawdziwa pozycja to zostanie wyemitowany.
Bur po zdać test wynik jest
Subscription done:
Subscription done:
Subscription done:
Got : item --> onNext() callback
Got : item --> onNext() callback
Got : item --> onNext() callback
There's nie zmieni się w wyniku jeśli zamiast false Wracam prawdziwe.
Ktoś może wyjaśnić mi tę operację nieco lepiej, proszę.
Mogę być głupi, ale po zmodyfikowaniu testu i ponownym przeczytaniu dokumentu nadal go nie dostaję. Czy myślisz, że mógłbyś opracować bardzo prosty przykład? Nie martw się, jeśli nie możesz, wymyślę. – paul
Zgodnie z dokumentacją "Element może zostać upuszczony przez jednego lub więcej subskrybentów". Jak mogę odtworzyć, który się zachowuje ?. Próbowałem po raz pierwszy w trybieNext i naSubskrybuj po raz pierwszy, po prostu wykonaj subskrypcję.cancel(), ale nadal nie widzę żadnych zmian w wyniku – paul
@paul Jestem również zainteresowany takim przykładem (wypróbowanie go teraz) . Uaktualni odpowiedź, jeśli ją wymyślę. – manouti