web-dev-qa-db-ja.com

setTimeoutObservableメソッドから値にアクセスします

asyncsetTimeout()observableメソッドから値にアクセスする方法を教えてください。私は通常のasyncメソッドを以下のように記述しました。しかし、私たち全員が知っているように、それは必要なことを実行しません。ここでobservableを使用するにはどうすればよいですか?どんな指導も本当にありがたいです。

page.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;
  }
6
Sampath

Es6で非同期を処理するには、2つの選択肢があります。
Promise:関数に使用すると1回だけ返されます:

asyncPromise() {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("Hello");
      }, 2000)
    })
}

this.asyncPromise().then(data=>{console.log(data)}); //Print Hello after 2s

Observable:関数の戻りに複数回使用:

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

PromiseObservable の違いについてもっと見る==

9
Duannx