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

Relaterte artikler