io.reactivex.Observable.switchIfEmpty()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(9.1k)|赞(0)|评价(0)|浏览(172)

本文整理了Java中io.reactivex.Observable.switchIfEmpty()方法的一些代码示例,展示了Observable.switchIfEmpty()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Observable.switchIfEmpty()方法的具体详情如下:
包路径:io.reactivex.Observable
类名称:Observable
方法名:switchIfEmpty

Observable.switchIfEmpty介绍

[英]Returns an Observable that emits the items emitted by the source ObservableSource or the items of an alternate ObservableSource if the source ObservableSource is empty.

Scheduler: switchIfEmpty does not operate by default on a particular Scheduler.
[中]返回一个ObservableSource,该ObservableSource发出源ObservableSource发出的项,如果源ObservableSource为空,则返回备用ObservableSource发出的项。
调度器:switchIfEmpty默认情况下不会在特定的调度器上运行。

代码示例

代码示例来源:origin: ReactiveX/RxJava

  1. @Test(expected = NullPointerException.class)
  2. public void switchIfEmptyNull() {
  3. just1.switchIfEmpty(null);
  4. }

代码示例来源:origin: ReactiveX/RxJava

  1. /**
  2. * Returns an Observable that emits the items emitted by the source ObservableSource or a specified default item
  3. * if the source ObservableSource is empty.
  4. * <p>
  5. * <img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/defaultIfEmpty.png" alt="">
  6. * <dl>
  7. * <dt><b>Scheduler:</b></dt>
  8. * <dd>{@code defaultIfEmpty} does not operate by default on a particular {@link Scheduler}.</dd>
  9. * </dl>
  10. *
  11. * @param defaultItem
  12. * the item to emit if the source ObservableSource emits no items
  13. * @return an Observable that emits either the specified default item if the source ObservableSource emits no
  14. * items, or the items emitted by the source ObservableSource
  15. * @see <a href="http://reactivex.io/documentation/operators/defaultifempty.html">ReactiveX operators documentation: DefaultIfEmpty</a>
  16. */
  17. @CheckReturnValue
  18. @SchedulerSupport(SchedulerSupport.NONE)
  19. public final Observable<T> defaultIfEmpty(T defaultItem) {
  20. ObjectHelper.requireNonNull(defaultItem, "defaultItem is null");
  21. return switchIfEmpty(just(defaultItem));
  22. }

代码示例来源:origin: redisson/redisson

  1. /**
  2. * Returns an Observable that emits the items emitted by the source ObservableSource or a specified default item
  3. * if the source ObservableSource is empty.
  4. * <p>
  5. * <img width="640" height="305" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/defaultIfEmpty.png" alt="">
  6. * <dl>
  7. * <dt><b>Scheduler:</b></dt>
  8. * <dd>{@code defaultIfEmpty} does not operate by default on a particular {@link Scheduler}.</dd>
  9. * </dl>
  10. *
  11. * @param defaultItem
  12. * the item to emit if the source ObservableSource emits no items
  13. * @return an Observable that emits either the specified default item if the source ObservableSource emits no
  14. * items, or the items emitted by the source ObservableSource
  15. * @see <a href="http://reactivex.io/documentation/operators/defaultifempty.html">ReactiveX operators documentation: DefaultIfEmpty</a>
  16. */
  17. @CheckReturnValue
  18. @SchedulerSupport(SchedulerSupport.NONE)
  19. public final Observable<T> defaultIfEmpty(T defaultItem) {
  20. ObjectHelper.requireNonNull(defaultItem, "defaultItem is null");
  21. return switchIfEmpty(just(defaultItem));
  22. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void testSwitchWhenNotEmpty() throws Exception {
  3. final AtomicBoolean subscribed = new AtomicBoolean(false);
  4. final Observable<Integer> o = Observable.just(4)
  5. .switchIfEmpty(Observable.just(2)
  6. .doOnSubscribe(new Consumer<Disposable>() {
  7. @Override
  8. public void accept(Disposable d) {
  9. subscribed.set(true);
  10. }
  11. }));
  12. assertEquals(4, o.blockingSingle().intValue());
  13. assertFalse(subscribed.get());
  14. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void testSwitchWhenEmpty() throws Exception {
  3. final Observable<Integer> o = Observable.<Integer>empty()
  4. .switchIfEmpty(Observable.fromIterable(Arrays.asList(42)));
  5. assertEquals(42, o.blockingSingle().intValue());
  6. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void testSwitchShouldTriggerUnsubscribe() {
  3. final Disposable d = Disposables.empty();
  4. Observable.unsafeCreate(new ObservableSource<Long>() {
  5. @Override
  6. public void subscribe(final Observer<? super Long> observer) {
  7. observer.onSubscribe(d);
  8. observer.onComplete();
  9. }
  10. }).switchIfEmpty(Observable.<Long>never()).subscribe();
  11. assertTrue(d.isDisposed());
  12. }
  13. }

代码示例来源:origin: ReactiveX/RxJava

  1. .switchIfEmpty(withProducer)
  2. .lift(new ObservableOperator<Long, Long>() {
  3. @Override

代码示例来源:origin: GrossumUA/TAS_Android_Boilerplate

  1. /**
  2. * Replaces observable of objects with observable of optionals.
  3. * Result observable always contains optionals, Optional.empty() if source observable has no items.
  4. */
  5. public static <T> Observable<Optional<T>> toOptObs(Observable<T> source) {
  6. return source.map(Optional::ofNullable)
  7. .switchIfEmpty(just(Optional.empty()));
  8. }

代码示例来源:origin: fengzhizi715/RxCache

  1. @Override
  2. public <T> Observable<Record<T>> execute(RxCache rxCache, String key, Observable<T> source, Type type) {
  3. Observable<Record<T>> cache = rxCache.<T>load2Observable(key, type);
  4. Observable<Record<T>> remote = source
  5. .map(new Function<T, Record<T>>() {
  6. @Override
  7. public Record<T> apply(@NonNull T t) throws Exception {
  8. rxCache.save(key, t);
  9. return new Record<>(Source.CLOUD, key, t);
  10. }
  11. });
  12. return cache.switchIfEmpty(remote);
  13. }
  14. }

代码示例来源:origin: fengzhizi715/RxCache

  1. @Override
  2. public <T> Observable<Record<T>> execute(RxCache rxCache, String key, Observable<T> source, Type type) {
  3. Observable<Record<T>> cache = rxCache.<T>load2Observable(key, type);
  4. Observable<Record<T>> remote = source
  5. .map(new Function<T, Record<T>>() {
  6. @Override
  7. public Record<T> apply(@NonNull T t) throws Exception {
  8. rxCache.save(key, t);
  9. return new Record<>(Source.CLOUD, key, t);
  10. }
  11. });
  12. return remote.switchIfEmpty(cache);
  13. }
  14. }

代码示例来源:origin: WallaceXiao/StockChart-MPAndroidChart

  1. @Override
  2. public <T> Observable<CacheResult<T>> execute(RxCache rxCache, String key, long time, Observable<T> source, Type type) {
  3. Observable<CacheResult<T>> cache = loadCache(rxCache, type, key, time, true);
  4. Observable<CacheResult<T>> remote = loadRemote(rxCache, key, source, false);
  5. return cache.switchIfEmpty(remote);
  6. }
  7. }

代码示例来源:origin: TetraTutorials/clean-android

  1. @Override
  2. public Observable<Result> getResultData() {
  3. return getResultsFromMemory().switchIfEmpty(getResultsFromNetwork());
  4. }
  5. }

代码示例来源:origin: TetraTutorials/clean-android

  1. @Override
  2. public Observable<String> getCountryData() {
  3. return getCountriesFromMemory().switchIfEmpty(getCountriesFromNetwork());
  4. }

代码示例来源:origin: fengzhizi715/RxCache

  1. @Override
  2. public <T> Observable<Record<T>> execute(RxCache rxCache, String key, Observable<T> source, Type type) {
  3. Observable<Record<T>> cache = rxCache.<T>load2Observable(key, type)
  4. .filter(new Predicate<Record<T>>() {
  5. @Override
  6. public boolean test(Record<T> record) throws Exception {
  7. return System.currentTimeMillis() - record.getCreateTime() <= timestamp;
  8. }
  9. });
  10. Observable<Record<T>> remote = source
  11. .map(new Function<T, Record<T>>() {
  12. @Override
  13. public Record<T> apply(@NonNull T t) throws Exception {
  14. rxCache.save(key, t);
  15. return new Record<>(Source.CLOUD, key, t);
  16. }
  17. });
  18. return cache.switchIfEmpty(remote);
  19. }
  20. }

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

  1. public Single<Token> grant(TokenRequest tokenRequest, Client client) {
  2. return Observable
  3. .fromIterable(tokenGranters.values())
  4. .filter(tokenGranter -> tokenGranter.handle(tokenRequest.getGrantType()))
  5. .switchIfEmpty(Observable.error(new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType())))
  6. .flatMapSingle(tokenGranter -> tokenGranter.grant(tokenRequest, client)).singleOrError();
  7. }

代码示例来源:origin: gravitee-io/graviteeio-access-management

  1. public Single<Token> grant(TokenRequest tokenRequest, Client client) {
  2. return Observable
  3. .fromIterable(tokenGranters.values())
  4. .filter(tokenGranter -> tokenGranter.handle(tokenRequest.getGrantType()))
  5. .switchIfEmpty(Observable.error(new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType())))
  6. .flatMapSingle(tokenGranter -> tokenGranter.grant(tokenRequest, client)).singleOrError();
  7. }

代码示例来源:origin: gravitee-io/graviteeio-access-management

  1. @Override
  2. public Single<AuthorizationResponse> run(AuthorizationRequest authorizationRequest, Client client, User endUser) {
  3. return Observable
  4. .fromIterable(flows)
  5. .filter(flow -> flow.handle(authorizationRequest.getResponseType()))
  6. .switchIfEmpty(Observable.error(new UnsupportedResponseTypeException("Unsupported response type: " + authorizationRequest.getResponseType())))
  7. .flatMapSingle(flow -> flow.run(authorizationRequest, client, endUser)).singleOrError();
  8. }

代码示例来源:origin: io.gravitee.am.gateway.handlers/gravitee-am-gateway-handler

  1. @Override
  2. public Single<AuthorizationResponse> run(AuthorizationRequest authorizationRequest, Client client, User endUser) {
  3. return Observable
  4. .fromIterable(flows)
  5. .filter(flow -> flow.handle(authorizationRequest.getResponseType()))
  6. .switchIfEmpty(Observable.error(new UnsupportedResponseTypeException("Unsupported response type: " + authorizationRequest.getResponseType())))
  7. .flatMapSingle(flow -> flow.run(authorizationRequest, client, endUser)).singleOrError();
  8. }

代码示例来源:origin: com.firstdata.clovergo/domain

  1. }).switchIfEmpty(Observable.<EmployeeMerchant>error(new Error("no_employee_to_set_passcode", "PassCode set failed please re-activate")));

相关文章

Observable类方法