【问题标题】:How can I get object from observable stream如何从可观察流中获取对象
【发布时间】:2022-11-12 19:09:51
【问题描述】:

我有以下代码

constructor(private http: HttpClient){};

ngOnInit() {
   this.$users = this.http.get('https://jsonplaceholder.typicode.com/users');
}

所以在我获得所有用户之后,我需要过滤名称为 Leanne Graham 的对象

所以出于这个原因,我添加了过滤器

constructor(private http: HttpClient){};

ngOnInit() {
   this.$users = this.http.get('https://jsonplaceholder.typicode.com/users');
   const name = this.$users.pipe(filter(user => user.name === 'Leanne Graham'))
   console.log(name);
}

现在代替对象

{
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },

我越来越被观察到。我怎样才能直接得到名字? 在这种情况下,我是否总是需要订阅才能从流中获取名称?

【问题讨论】:

  • 是的,您必须订阅您的信息流。 Observable 是一个流,而不是一个对象。
  • Observables 在订阅之前不会执行,所以你总是必须订阅或做一些等效的事情,比如firstValueFrom

标签: angular rxjs


【解决方案1】:

一个可观察对象是一个流,就像你需要等待一个值被发出的承诺一样。这是通过subscribe() 完成的。

除了subscribe(),别无他法。在特定情况下,订阅的调用也可以被包装/隐藏。例如使用asyncPipe 或当您使用firstValueFrom() / lastValueFrom() 转换为promise 时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2020-05-03
    • 2018-12-16
    • 2021-12-28
    相关资源
    最近更新 更多