Angular里用Observable订阅后数据不更新是怎么回事?

Mr.青青 阅读 2

我在Angular组件里用HttpClient请求数据,返回的是Observable,subscribe之后第一次能拿到数据,但后续服务端数据变了,页面却没更新。是不是漏了什么操作?

我试过用async管道,也手动subscribe了,都不行。难道Observable不会自动推送新值吗?下面是我用React写的类似逻辑(虽然现在用的是Angular,但逻辑应该差不多):

useEffect(() => {
  const fetchData = async () => {
    const res = await fetch('/api/data');
    const data = await res.json();
    setData(data);
  };
  fetchData();
}, []);
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
恒博 Dev
问题在于HTTP请求默认只发一次,不像WebSocket会持续推送。两种解法:

1. 轮询方案:
interval(5000).pipe(
switchMap(() => this.http.get('/api/data'))
).subscribe(data => this.data = data);


2. 手动触发重载:
reload() {
this.http.get('/api/data').subscribe(data => this.data = data);
}


Observable不是魔法,服务端不推新数据它就不会自动更新,和React的useEffect空依赖数组一个道理。
点赞
2026-03-06 12:06