В RxJS карта не выполняет наблюдаемое внутреннее отображение

Попробуйте

execute("select fact from factoids where key like ?", "%%s%" % val)

Вы вообще ничего не обмениваете вокруг ?, Python sqlite корректно преобразует его в цитируемый объект.

1
задан Regular User 18 January 2019 в 22:11
поделиться

1 ответ

Если я вас правильно понимаю, то думаю, что это решение. Ваша проблема была с первым map, который не будет выполнять внутреннюю подписку, а просто преобразует поток в Observables of Observables, который, кажется, не соответствует вашим ожиданиям. Вместо этого я использовал mergeMap там.

Внутри from я использовал concatMap, чтобы заставить каждое излучение из first и second происходить по порядку и ждать завершения одного, прежде чем начнется другое. Я также настроил функции postToEndpoint, которые возвращают Observables, чтобы они были ближе к тому, как ваш реальный код, вероятно, будет выглядеть.

StackBlitz Демо

код:

import { mergeMap, concatMap, delay, tap, catchError, toArray } from 'rxjs/operators';
import { merge, of, from, concat, throwError } from 'rxjs';

const single = "name";

const first = ["abc", "def"];

const second = of("ghi", "jkl", "mno");

const postToEndpoint1$ = photo => of(photo).pipe(
  tap(data => console.log('start of postTo1 for photo:', photo)),
  delay(5000),
  tap(data => console.log('end of postTo1 for photo:', photo))
);

const postToEndpoint2$ = video => of(video).pipe(
  tap(data => console.log('start of postTo2 for video:', video)),
  delay(5000),
  tap(data => console.log('end of postTo2 for video:', video))
);

of(single).pipe(
  tap(val => console.log(`initial emit:${val}`)),
  mergeMap(claim => 
    merge(
      from(first).pipe(concatMap(postToEndpoint1$)),
      from(second).pipe(concatMap(postToEndpoint2$))
      )
  ),
  toArray(),
  catchError(error => {
    console.log("error");
    return throwError(error);
  })
).subscribe(val => console.log(`final:`, val));

Надеюсь, это поможет.

0
ответ дан dmcgrandle 18 January 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: