web-dev-qa-db-ger.com

Beobachtbare Forkjoin-Abonnementtypen

Ich rufe zwei API-Anforderungen mit typisierten Antworten auf und kombiniere sie zu einer einzigen Observable.forkJoin. Ich möchte beide Ergebnisse in verschiedenen typisierten Variablen erhalten.

var observableOrganization: Observable<Organization> = this.getOrganizationDetails();
var observablePromotion: Observable<Promotion[]> = this.getPromotions();

  Observable.forkJoin([ observableOrganization, observablePromotion])
            .subscribe(**response**) => {
                **organization:Organization = response[0];
                promotions:Array<Promotions> = response[1];**
            },
            error => {
                //error here
            });

Wie kann ich getippte Ergebnisse in einer einzelnen Abonnementantwort erreichen? Ich hoffe es hilft und danke dir!

6
Jorge Guerola

Mit es6 destructuring können Sie auch Typen hinzufügen, wenn diese nicht automatisch zugewiesen werden

 Observable.forkJoin([ observableOrganization, observablePromotion])
        .subscribe([org, prom]: [Organization, Promotion[]]) => {
            organization:Organization = org;
            promotions: Promotions[] = prom
        },
        error => {
            //error here
        });
9
alexKhymenko

forkJoin gibt nur "Nice" -Typen zurück, wenn die Anforderungen explizit als ObservalbleInput deklariert sind.

Ich persönlich bevorzuge diese Syntax mit der Sprachfunktion "Zerstören":

const requests: [ObservableInput<Organization>, ObservableInput<Promotion[]>] = [observableOrganization, observablePromotion];
forkJoin(requests)
    .subscribe(([organization, promotions]: [Organization, Promotion[]]) => {
        // use organization and promotions here
    },
    error => {
        //error here
    });
0
slartidan