你能告诉我如何从 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/