Дождитесь завершения наблюдаемого в RxDart с помощью Flutter - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно создать экземпляр базы данных, выполнив следующие операции:

  1. Observable.fromFuture(getApplicationDocumentsDirectory())
  2. (Directory dir) => ждать Observable.fromFuture(dir.create(recursive: true)).
  3. (Directory dir) => String
  4. switchMap из будущего.

Или в коде:

Observable.fromFuture(...)
    .waitToResolveWithoutMapToIt((dir) => Observable.fromFuture(...))
    .map((dir) => ...)
    .switchMap(_openDatabase$);

Я борюсь с разделом 2.

Есть ли удобный способ заставить RxDart ждать разрешения Observable.fromFuture(dir.create(recursive: true)) БЕЗ сопоставления с ним и затем перейти к разделу 3?

Я могу придумать два обходных пути:

SwitchMap внутри SwitchMap

переключиться на .create, а затем переключиться обратно в каталог.

WithLatestFrom (a, b) => (a)

сделать с последним из гибенанаблюдаемый, и сопоставьте его с dir.


PS 1

Я заметил, что RxJS имеет delayWhen, который может решить мою проблему,но, к сожалению, RxDart не реализовал этот метод (пока?).

PS 2

Я обнаружил, что dir.create вернет dir, что сохраняетя от всего этого делаю, но квестИон остается жизнеспособным, так как в следующий раз мне не повезет.

...