2017-11-16 3 views
2

Ich muss Verzögerungsoperator von RxJava verwenden. Kann mir jemand erklären, wie es funktioniert? Schläft der Thread während der Verzögerung? Wie genau ist die Verzögerung? Ich muss im schlimmsten Fall fast 1 Tag (24 Stunden Verspätung) ausgeben.RxJava - sehr lange Verzögerung

+2

Wow, ich glaube nicht, RxJava das richtige Werkzeug dafür ist. –

+2

RxJava verwendet die standardmäßige Java-Klasse 'ScheduledThreadPoolExecutor' für seine Verzögerungsoperationen, daher hängt die Genauigkeit von dem JDK und der Plattform ab, auf der Sie arbeiten. – akarnokd

+0

Willkommen bei Stack Overflow! Wir sind nicht hier, um deine Arbeit für dich zu tun. Bitte nehmen Sie die [Tour] (https://stackoverflow.com/tour) und lesen Sie die [Hilfeseiten] (https://stackoverflow.com/help), um zu sehen, wie Sie eine gute, beantwortbare Frage schreiben. Sie müssen zeigen, was Sie bisher getan haben, um Ihr Problem zu lösen, indem Sie Ihren Code veröffentlichen. –

Antwort

2

Mit dem Verzögerungsoperator verzögern wir die Erstellung der Pipeline von faul zu eifrig. Aber einmal starten Sie den Verzögerungsoperator emittiert die Elemente nicht beeinträchtigt emittiert

@Test 
public void delayCreation() { 
    long start = System.currentTimeMillis(); 
    Subscription subscription = Observable.just("hello reactive world") 
      .delay(200, TimeUnit.MICROSECONDS) 
      .subscribe(n -> System.out.println("time:" + (System.currentTimeMillis() - start))); 
    new TestSubscriber((Observer) subscription).awaitTerminalEvent(1000, TimeUnit.MILLISECONDS); 
} 

Sie können weitere Beispiele für Verzögerung sehen hier https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/utils/ObservableDelay.java