在这个Angular 2示例中,这个Observable行为究竟如何?

时间:2017-09-25 11:19:46

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

我不是那么喜欢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)

你能帮助我理解究竟是如何运作的吗?

2 个答案:

答案 0 :(得分:1)

(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()

返回的结果执行

答案 1 :(得分:0)

   // 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错误),控制台将显示错误。无论如何,观察将被解决和关闭。对于生活"可观察的,可以在某个时间点更新,可以使用某种类型的Subject