angular - 从 setTimeout Observable 方法访问一个值

标签 angular typescript rxjs observable ionic3

你能告诉我如何从 async setTimeout() 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;
  }

最佳答案

要处理 es6 中的异步,您有 2 个选择:
Promise:用于函数只返回一次:<​​/p>

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

查看更多关于 differences between Promise and Observable 的信息

关于angular - 从 setTimeout Observable 方法访问一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272071/

相关文章:

Angular 5 - 使用带有 uglify 和 minify 的 ng build 开发/QA 构建(如 ng build --prod)

html - 如何使用 Bootstrap 导航栏和侧边栏? (组件重叠)

angular - 为什么 rxjs debounceTime 不适用于使用 'of' 运算符创建的可观察量?

angular - @Input 是否提供双向绑定(bind)?

angular - 为什么我们应该在 Angular 中使用 subscribe() 而不是 map()?

javascript - 我可以将管道添加到现有的可观察对象中吗

error-handling - rxjs-最终处理异步错误

angular - 基于数组 Angular 2 中 id 数量的动态 URL 参数

angular - 如何从测试代码中触发 Angular Material MatSelect 上的 selectionChange 事件

javascript - 循环遍历构造函数内的类键?