javascript - Promise<any> blir konvertert til ZoneAwarePromise


Jeg bruker Angular5 i prosjektet mitt. Jeg har implementert metoder i API-tjenesten min for å returnere løfter

method(): Promise<any> {
    return new Promise<any>((resolve,reject) => {
        this.http.get(url).subscribe((response) => {
            resolve(response);
        }, (error) => reject(error));
    });
}

I komponenten er det nødvendig å sikre at alle dataene er hentet før videre operasjoner. Jeg prøvde å gjøre dette:

const fetch = [];
fetch.push(this.api.method());
fetch.push(this.api.method1());
fetch.push(this.api.method2());

Promise.all(fetch).then(() => alert('data fetched')); 

Det nådde aldri varsel. Alt lykkes med kode 200.

Da jeg satte pausestopp i utførelsen på linjen med Promise.all, så jeg at mine Promise(r) ble konvertert til ZoneAwarePromise.

Det fungerer godt når jeg bare kjeder dem sammen ved å legge inn kall i .then(s)

Hvorfor ble Promise konvertert? Hvordan få Promise.all til å fungere?

Svar #1

Hva med å bruke forkJoin i stedet for Promise.all? ved å gjøre noe som:

forkJoin(...fetch.map(yourPromis(url)))

Relaterte artikler