rx.Observable.singleOrDefault()方法的使用及代码示例

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

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

Observable.singleOrDefault介绍

[英]Returns an Observable that emits the single item emitted by the source Observable, if that Observable emits only a single item, or a default item if the source Observable emits no items. If the source Observable emits more than one item, throw an IllegalArgumentException.

Scheduler: singleOrDefault does not operate by default on a particular Scheduler.
[中]如果源可观测对象仅发射单个项,则返回发射源可观测对象发射的单个项的可观测对象;如果源可观测对象未发射任何项,则返回默认项。如果源Observable发出多个项,则抛出IllegalArgumentException。
调度程序:默认情况下,singleOrDefault不会在特定调度程序上运行。

代码示例

代码示例来源:origin: jooby-project/jooby

  1. @Override
  2. public <T> Observable<List<T>> query(final N1qlQuery query) {
  3. return bucket.query(query)
  4. .flatMap(aqr -> Observable.zip(aqr.rows().toList(),
  5. aqr.errors().toList(),
  6. aqr.finalSuccess().singleOrDefault(Boolean.FALSE),
  7. (rows, errors, finalSuccess) -> {
  8. if (!finalSuccess) {
  9. throw new QueryExecutionException(
  10. "execution of query resulted in exception: ",
  11. Try.apply(() -> errors.get(0)).orElse(null));
  12. }
  13. List<T> value = new ArrayList<>();
  14. for (AsyncN1qlQueryRow row : rows) {
  15. try {
  16. T v = converter.fromBytes(row.byteValue());
  17. value.add(v);
  18. } catch (IOException ex) {
  19. throw new QueryExecutionException(
  20. "execution of query resulted in exception", null, ex);
  21. }
  22. }
  23. return value;
  24. }));
  25. }

代码示例来源:origin: leeowenowen/rxjava-examples

  1. @Override
  2. public void run() {
  3. Observable.<Integer>empty().singleOrDefault(10).subscribe(new Action1<Integer>() {
  4. @Override
  5. public void call(Integer integer) {
  6. log(integer);
  7. }
  8. });
  9. }
  10. });

代码示例来源:origin: alex-shpak/rx-jersey

  1. @Override
  2. public Single convert(Observable<?> result) throws Throwable {
  3. return result.singleOrDefault(null).toSingle();
  4. }
  5. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. /**
  2. * Returns an Observable that emits only the very first item emitted by the source Observable, or a default
  3. * item if the source Observable completes without emitting anything.
  4. * <p>
  5. * <img width="640" height="305" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/firstOrDefault.png" alt="">
  6. * <dl>
  7. * <dt><b>Scheduler:</b></dt>
  8. * <dd>{@code firstOrDefault} does not operate by default on a particular {@link Scheduler}.</dd>
  9. * </dl>
  10. *
  11. * @param defaultValue
  12. * the default item to emit if the source Observable doesn't emit anything
  13. * @return an Observable that emits only the very first item from the source, or a default item if the
  14. * source Observable completes without emitting any items
  15. * @see <a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#firstordefault">RxJava wiki: firstOrDefault</a>
  16. * @see "MSDN: Observable.firstOrDefaultAsync"
  17. */
  18. public final Observable<T> firstOrDefault(T defaultValue) {
  19. return take(1).singleOrDefault(defaultValue);
  20. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. /**
  2. * Returns an Observable that emits only the last item emitted by the source Observable, or a default item
  3. * if the source Observable completes without emitting any items.
  4. * <p>
  5. * <img width="640" height="305" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/lastOrDefault.png" alt="">
  6. * <dl>
  7. * <dt><b>Scheduler:</b></dt>
  8. * <dd>{@code lastOrDefault} does not operate by default on a particular {@link Scheduler}.</dd>
  9. * </dl>
  10. *
  11. * @param defaultValue
  12. * the default item to emit if the source Observable is empty
  13. * @return an Observable that emits only the last item emitted by the source Observable, or a default item
  14. * if the source Observable is empty
  15. * @see <a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#lastordefault">RxJava wiki: lastOrDefault</a>
  16. * @see "MSDN: Observable.lastOrDefaultAsync"
  17. */
  18. public final Observable<T> lastOrDefault(T defaultValue) {
  19. return takeLast(1).singleOrDefault(defaultValue);
  20. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. /**
  2. * Returns an Observable that emits only the very first item emitted by the source Observable that satisfies
  3. * a specified condition, or a default item if the source Observable emits no such items.
  4. * <p>
  5. * <img width="640" height="310" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/firstOrDefaultN.png" alt="">
  6. * <dl>
  7. * <dt><b>Scheduler:</b></dt>
  8. * <dd>{@code firstOrDefault} does not operate by default on a particular {@link Scheduler}.</dd>
  9. * </dl>
  10. *
  11. * @param predicate
  12. * the condition any item emitted by the source Observable has to satisfy
  13. * @param defaultValue
  14. * the default item to emit if the source Observable doesn't emit anything that satisfies the
  15. * {@code predicate}
  16. * @return an Observable that emits only the very first item emitted by the source Observable that satisfies
  17. * the {@code predicate}, or a default item if the source Observable emits no such items
  18. * @see <a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#firstordefault">RxJava wiki: firstOrDefault</a>
  19. * @see "MSDN: Observable.firstOrDefaultAsync"
  20. */
  21. public final Observable<T> firstOrDefault(T defaultValue, Func1<? super T, Boolean> predicate) {
  22. return takeFirst(predicate).singleOrDefault(defaultValue);
  23. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public DesignDocument getDesignDocument(final String name, final long timeout, final TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(
  4. asyncBucketManager.getDesignDocument(name).singleOrDefault(null), timeout, timeUnit
  5. );
  6. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. /**
  2. * If this {@code BlockingObservable} completes after emitting a single item that matches a predicate,
  3. * return that item; if it emits more than one such item, throw an {@code IllegalArgumentException}; if it
  4. * emits no items, return a default value.
  5. * <p>
  6. * <img width="640" height="315" src="https://github.com/ReactiveX/RxJava/wiki/images/rx-operators/B.singleOrDefault.p.png" alt="">
  7. *
  8. * @param defaultValue
  9. * a default value to return if this {@code BlockingObservable} emits no matching items
  10. * @param predicate
  11. * a predicate function to evaluate items emitted by this {@code BlockingObservable}
  12. * @return the single item emitted by the {@code BlockingObservable} that matches the predicate, or the
  13. * default value if no such items are emitted
  14. * @see <a href="https://github.com/ReactiveX/RxJava/wiki/Blocking-Observable-Operators#single-and-singleordefault">RxJava Wiki: singleOrDefault()</a>
  15. * @see <a href="http://msdn.microsoft.com/en-us/library/system.reactive.linq.observable.singleordefault.aspx">MSDN: Observable.SingleOrDefault</a>
  16. */
  17. public T singleOrDefault(T defaultValue, Func1<? super T, Boolean> predicate) {
  18. return blockForSingle(o.filter(predicate).map(Functions.<T>identity()).singleOrDefault(defaultValue));
  19. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public DesignDocument getDesignDocument(final String name, final boolean development, final long timeout,
  3. final TimeUnit timeUnit) {
  4. return Blocking.blockForSingle(
  5. asyncBucketManager.getDesignDocument(name, development).singleOrDefault(null), timeout, timeUnit
  6. );
  7. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public BucketSettings getBucket(String name, long timeout, TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(asyncClusterManager.getBucket(name).singleOrDefault(null), timeout, timeUnit);
  4. }

代码示例来源:origin: com.netflix.rxjava/rxjava-core

  1. /**
  2. * If this {@code BlockingObservable} completes after emitting a single item, return that item; if it emits
  3. * more than one item, throw an {@code IllegalArgumentException}; if it emits no items, return a default
  4. * value.
  5. * <p>
  6. * <img width="640" height="315" src="https://github.com/ReactiveX/RxJava/wiki/images/rx-operators/B.singleOrDefault.png" alt="">
  7. *
  8. * @param defaultValue
  9. * a default value to return if this {@code BlockingObservable} emits no items
  10. * @return the single item emitted by this {@code BlockingObservable}, or the default value if it emits no
  11. * items
  12. * @see <a href="https://github.com/ReactiveX/RxJava/wiki/Blocking-Observable-Operators#single-and-singleordefault">RxJava Wiki: singleOrDefault()</a>
  13. * @see <a href="http://msdn.microsoft.com/en-us/library/system.reactive.linq.observable.singleordefault.aspx">MSDN: Observable.SingleOrDefault</a>
  14. */
  15. public T singleOrDefault(T defaultValue) {
  16. return blockForSingle(o.map(Functions.<T>identity()).singleOrDefault(defaultValue));
  17. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public JsonDocument document(long timeout, TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(asyncViewRow.document().singleOrDefault(null), timeout, timeUnit);
  4. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public <D extends Document<?>> D document(Class<D> target, long timeout, TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(asyncViewRow.document(target).singleOrDefault(null), timeout, timeUnit);
  4. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public JsonDocument document(long timeout, TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(asyncViewRow.document().singleOrDefault(null), timeout, timeUnit);
  4. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public <D extends Document<?>> D document(Class<D> target, long timeout, TimeUnit timeUnit) {
  3. return Blocking.blockForSingle(asyncViewRow.document(target).singleOrDefault(null), timeout, timeUnit);
  4. }

代码示例来源:origin: com.couchbase.client/java-client

  1. /**
  2. * Maps a raw {@link ViewQueryResponse} into a {@link AsyncViewResult}.
  3. *
  4. * @param bucket reference to the bucket.
  5. * @param query the original query object.
  6. * @param response the response from the server.
  7. * @return a converted {@link AsyncViewResult}.
  8. */
  9. public static Observable<AsyncViewResult> mapToViewResult(final AsyncBucket bucket, final ViewQuery query,
  10. final ViewQueryResponse response) {
  11. return response
  12. .info()
  13. .singleOrDefault(null)
  14. .map(new ByteBufToJsonObject())
  15. .map(new BuildViewResult(bucket, query, response));
  16. }

代码示例来源:origin: com.couchbase.client/java-client

  1. /**
  2. * Maps a raw {@link ViewQueryResponse} into a {@link AsyncSpatialViewResult}.
  3. *
  4. * @param bucket reference to the bucket.
  5. * @param query the original query object.
  6. * @param response the response from the server.
  7. * @return a converted {@link AsyncSpatialViewResult}.
  8. */
  9. public static Observable<AsyncSpatialViewResult> mapToSpatialViewResult(final AsyncBucket bucket,
  10. final SpatialViewQuery query, final ViewQueryResponse response) {
  11. return response
  12. .info()
  13. .singleOrDefault(null)
  14. .map(new ByteBufToJsonObject())
  15. .map(new BuildSpatialViewResult(bucket, query, response));
  16. }

代码示例来源:origin: nurkiewicz/rxjava-book-examples

  1. default Observable<Integer> populationOf(String query) {
  2. return search(query)
  3. .concatMapIterable(SearchResult::getGeonames)
  4. .map(Geoname::getPopulation)
  5. .filter(p -> p != null)
  6. .singleOrDefault(0)
  7. .doOnError(th ->
  8. log.warn("Falling back to 0 for {}", query, th))
  9. .onErrorReturn(th -> 0)
  10. .subscribeOn(Schedulers.io());
  11. }

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public Observable<AnalyticsQueryResult> call(final AsyncAnalyticsQueryResult aqr) {
  3. final boolean parseSuccess = aqr.parseSuccess();
  4. final String requestId = aqr.requestId();
  5. final String clientContextId = aqr.clientContextId();
  6. return Observable.zip(aqr.signature().singleOrDefault(JsonObject.empty()),
  7. aqr.info().singleOrDefault(AnalyticsMetrics.EMPTY_METRICS),
  8. aqr.errors().toList(),
  9. aqr.status(),
  10. aqr.finalSuccess().singleOrDefault(Boolean.FALSE),
  11. new Func5<Object, AnalyticsMetrics, List<JsonObject>, String, Boolean, AnalyticsQueryResult>() {
  12. @Override
  13. public AnalyticsQueryResult call(Object signature, AnalyticsMetrics info, List<JsonObject> errors, String finalStatus, Boolean finalSuccess) {
  14. return new DefaultAnalyticsQueryResult(aqr.handle(), signature, info, errors, finalStatus, finalSuccess,
  15. parseSuccess, requestId, clientContextId);
  16. }
  17. });
  18. }
  19. };

代码示例来源:origin: com.couchbase.client/java-client

  1. @Override
  2. public Observable<AnalyticsQueryResult> call(AsyncAnalyticsQueryResult aqr) {
  3. final boolean parseSuccess = aqr.parseSuccess();
  4. final String requestId = aqr.requestId();
  5. final String clientContextId = aqr.clientContextId();
  6. return Observable.zip(aqr.rows().toList(),
  7. aqr.signature().singleOrDefault(JsonObject.empty()),
  8. aqr.info().singleOrDefault(AnalyticsMetrics.EMPTY_METRICS),
  9. aqr.errors().toList(),
  10. aqr.status(),
  11. aqr.finalSuccess().singleOrDefault(Boolean.FALSE),
  12. new Func6<List<AsyncAnalyticsQueryRow>, Object, AnalyticsMetrics, List<JsonObject>, String, Boolean, AnalyticsQueryResult>() {
  13. @Override
  14. public AnalyticsQueryResult call(List<AsyncAnalyticsQueryRow> rows, Object signature,
  15. AnalyticsMetrics info, List<JsonObject> errors, String finalStatus, Boolean finalSuccess) {
  16. return new DefaultAnalyticsQueryResult(rows, signature, info, errors, finalStatus, finalSuccess,
  17. parseSuccess, requestId, clientContextId);
  18. }
  19. });
  20. }
  21. };

相关文章

Observable类方法