簡體   English   中英

從RxJava 1到RxJava 2

[英]From RxJava 1 to RxJava 2

我正在嘗試將此RxJava1代碼轉換為RxJava2

public static Observable<Path> listFolder(Path dir, String glob) {
    return Observable.<Path>create(subscriber -> {
        try {
            DirectoryStream<Path> stream =
                    Files.newDirectoryStream(dir, glob);

            subscriber.add(Subscriptions.create(() -> {
                try {
                    stream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }));
            Observable.<Path>from(stream).subscribe(subscriber);
        } catch (DirectoryIteratorException ex) {
            subscriber.onError(ex);
        } catch (IOException ioe) {
            subscriber.onError(ioe);
        }
    });
}

問題是在Rxjava2中我沒有訂閱者添加新的訂閱。

享受RxJava 2個簡潔( Flowable的背壓支持類現在):

public static Flowable<Path> listFolder(Path dir, String glob) {
    return Flowable.using(
        () -> Files.newDirectoryStream(dir, glob),
        stream -> Flowable.fromIterable(stream),
        stream -> stream.close());
}

如果您不想要背壓,請將Flowable替換為Observable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM