我是 Angular 的新手,在整个订阅/可观察量的事情上仍然不是 100%。
我有一个网络服务,当调用它将返回我的网站感兴趣的状态对象。Web 服务的设置方式,它将保持连接打开状态 30 秒,如果没有新内容要报告,将关闭连接,此时我应该重新提交状态请求,依此类推。这样,始终存在与 Web 服务的连接。
如何在角度中执行此操作?我需要制作一个服务,该服务将不断ping此Web服务以获取状态,但正常的HTTP客户端可观察性是一个并且可以观察到的。我什至不完全确定如何设置异步线程。
状态终结点将返回一个状态对象,该对象可能包含要在屏幕上显示的新数据。
Observable.interval
:
class SomeService {
public statusPing$: Observable;
constructor(private http: HttpService) {
this.statusPing = Observable.interval(30000)
.switchMap(http.get('/api/ping/your_slug'))
}
}
注意事项:
您需要导入
interval
运算符(我只列出了相关代码)。您可能希望进一步映射响应 (
(respones) => response.json()
)你必须使可观察的热,意思是,在你的代码中的某个地方做
svc.statusPing$.subscribe()
。