angular - Tilgang til en verdi fra setTimeout Observable-metode
Kan du fortelle meg hvordan man får tilgang til en verdi fra async setTimeout() observable-metoden? Jeg har skrevet en vanlig async-metode som vist nedenfor. Men som vi alle vet gjør den ikke det jeg trenger. Hvordan kan jeg bruke observable her? Enhver veiledning vil bli virkelig verdsatt.
side.ts
loader = this.loadingControllerService.dismissLoaderWhenNoInternet(loader);
provider.ts
dismissLoaderWhenNoInternet(loader: Loading): Loading {
setTimeout(() => {
if (loader) {
loader = null;
return loader;//not working here
}
}, 5000);
return loader;
}
Svar #1
For å håndtere asynkroni i ES6 har du 2 valg:
Promise: bruk for funksjoner som bare returnerer én gang:
asyncPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello");
}, 2000)
})
}
this.asyncPromise().then(data=>{console.log(data)}); //Print Hello after 2s
Observable: bruk for funksjonsretur mer enn én gang:
import { Observable } from 'rxjs/Observable';
asyncObservable() {
return new Observable(observer => {
setInterval(() => {
observer.next("Hi");
}, 1000)
})
}
this.asyncObservable().subscribe(data=>{console.log(data);}) //Print Hi every 1s
Se mer om forskjellene mellom Promise og Observable
