【问题标题】:How exactly works this Observable behavior in this Angular 2 example?在这个 Angular 2 示例中,这种 Observable 行为究竟是如何工作的?
【发布时间】:2018-03-06 08:24:40
【问题描述】:

我不太喜欢 JavaScript\TypeScript,我对这段代码的工作原理有以下疑问:

  onGet() {
    this.serverService.getServers()
      .subscribe(
        (servers: any[]) => this.servers = servers,   // an array of anything (or an array of server)
        (error) => console.log(error)
      );
  }

据我所知,onGet() 方法正在调用返回 **Observable 的 getServers() 方法,因此它订阅了这个返回的 Observable 对象。

据我所知,Observable 的概念是:当这个对象发生变化时(触发事件时,如果我做错了断言,请纠正我),执行与匿名内部函数相关的代码。

但是在这里我不太确定这段代码的确切含​​义以及如何正确阅读它:

    (servers: any[]) => this.servers = servers,   // an array of anything (or an array of server)
    (error) => console.log(error)

您能帮我了解一下具体是如何工作的吗?

【问题讨论】:

标签: javascript angular typescript javascript-framework angular2-observables


【解决方案1】:
   // this function will resolve for a response, which is not an error
   (servers: any[]) => this.servers = servers,
   // this will resolve if the response is an error:
   //either a http error or thrown error
   (error) => console.log(error)

大概,对serverService 的调用请求服务器列表,而this.servers 是从该列表中设置的。如果出现错误(如 4XX 或 5XX 错误),控制台将显示错误。在任何情况下,observable 都会被解析并关闭。对于可以在稍后某个时间点更新的“活”可观察对象,可以使用某种类型的 Subject

【讨论】:

    【解决方案2】:
    (servers: any[]) => this.servers = servers,   // an array of anything (or an array of server)
    (error) => console.log(error)
    

    等价于

    (servers: any[]) => { //success callback
           this.servers = servers;   // an array of anything (or an array of server)
    },
    (error) => { //error callback
            console.log(error);
    }
    

    第一个是success回调,第二个是error回调,根据getServers()返回的结果执行

    【讨论】:

    • 内联表单也返回结果。
    • 是的。我刚刚把它变成了更易读的格式。那是实际的用户问题。
    • 我的意思是你的等价物没有。也不清楚这 OP 的实际问题。
    猜你喜欢
    • 2018-01-19
    • 2018-03-03
    • 2017-11-15
    • 2018-01-04
    • 2018-01-17
    • 2020-08-21
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多