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)))
