Что делает .defer () в RxJava?

Spring не будет поддерживать дальнейшие релизы как пакеты OSGi. Официальная поддержка была остановлена ​​весной 3.2.4 (хотя вы можете найти здесь 3.2.5 артефактов здесь , что противоречит утверждению, сделанному в Eclipse Forum )

Глин Нормингтон из источника Spring признал, что в нескольких местах см. здесь:

Однако есть надежда. В списке Karaf-dev можно прочитать, что они намерены поддерживать весенние библиотеки в проекте ServiceMix. Подробности во всей теме см. Здесь здесь .

0
задан aurelius 6 March 2019 в 08:00
поделиться

1 ответ

Отсрочка гарантирует, что каждый подписчик может получить свою собственную исходную последовательность, независимую от других подписчиков. Позвольте мне проиллюстрировать это двумя примерами:

AtomicInteger index = new AtomicInteger();

Flowable<String> source =
    Flowable.just("a", "b", "c", "d", "e", "f")
    .map(v -> index.incrementAndGet() + "-" + v)
    ;

source.subscribe(System.out:println);

source.subscribe(System.out:println);

отпечатков

1-a
2-b
3-c
4-d
5-e
6-f
7-a
8-b
9-c
10-d
11-e
12-f

против

Flowable<String> source =
    Flowable.defer(() -> {
        AtomicInteger index = new AtomicInteger();

        return Flowable.just("a", "b", "c", "d", "e", "f")
               .map(v -> index.incrementAndGet() + "-" + v)
               ;
    })
    ;

source.subscribe(System.out:println);

source.subscribe(System.out:println);

отпечатков

1-a
2-b
3-c
4-d
5-e
6-f
1-a
2-b
3-c
4-d
5-e
6-f

Во втором Например, существует состояние подписчика, которое в противном случае было бы разделено между всеми подписчиками. Теперь, поскольку каждый подписчик получает свою собственную индивидуальную последовательность, оба элемента индекса, как и следовало ожидать.

0
ответ дан akarnokd 6 March 2019 в 08:00
поделиться