Ich habe zwei beobachtbare: obs1 und OBS2Convert Observable <Observable <{t1: T1, T2: T2} >> auf beobachtbare <{t1: T1, T2: T2} []>
- obs1 ist vom Typ
Observable<T1[]>
(abgerufen von einerthis.service1.getT1Arr()
Funktion) - OBS2 vom Typ
Observable<T2>
(vonthis.service2.getT2(t1: T1)
Funktion abgerufen)
Ich möchte eine obs3 mit der Art erstellen:
Observable<{t1: T1, t2: T2}[]>
Mein aktuelles Problem ist, dass die Funktion, die ich OBS2 als Argument ein Objekt vom Typ T1 abzurufen verwende, also muss ich diese Schritte folgen :
- jedes Objekt vom Typ T1 aus dem [] -Array T1 Retrieve
- Für
- Construct seine entsprechende Objekt jedes T2 dieses Objekt abrufen ein Objekt aus diesen beiden Objekten
Zur Zeit habe ich den folgenden Code:
obs3 = this.service1.getT1Arr().flatMap((t1Arr: T1[]) => {
return t1Arr.map((t1) => {
return this.service2.getT2(t1).map((t2: T2) => {
return {
t1: t1
t2: t2
}
}
}
}
Aber ich habe den Fehler
Observable<Observable<{t1: T1, t2: T2}>> is not assignable to
Observable<{t1: T1, t2: T2}[]>
Also meine Frage ist: Wie kann ich meine Array halten während des Prozesses tippen und nicht im Austausch gegen ein Observable verlieren?
Ich sah bereits bei Kombination von Operatoren wie concat(), merge() und auch der Transformationsoperator switchMap() aber das Problem I ist, die ich nicht über zwei Parallelen strömen, aber eine Stream, der aus einem anderen Stream erstellt wird.
Jede Hilfe sehr geschätzt!
Haben Sie versucht, die Signatur spezifisch zu machen? d. h. '.flatMap ((t1Arr: T1 []): Array <{T1, t2}> => {...} ' – Meir