在这个 Angular 2 示例中,这种 Observable 行为究竟是如何工作的?
Posted
技术标签:
【中文标题】在这个 Angular 2 示例中,这种 Observable 行为究竟是如何工作的?【英文标题】:How exactly works this Observable behavior in this Angular 2 example? 【发布时间】: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)
您能帮我了解一下具体是如何工作的吗?
【问题讨论】:
你到底有什么不明白的?打字?箭头函数语法?你读过例如typescriptlang.org/docs/home.html?参见例如meta.***.com/q/253894/3001761 并且更具体。 我在 angular-2-training-book.rangle.io/handout/observables/…987654323@ 【参考方案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 的实际问题。以上是关于在这个 Angular 2 示例中,这种 Observable 行为究竟是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
在这个 Angular 2 应用程序中,这种跨组件通信“模式”究竟是如何工作的?
如何在 Angular 的 HttpClient 中使用 reportProgress? [复制]
如何在 Angular Universal 中检测屏幕分辨率?
这个简单的 PrimeNG Angular 2 示例究竟是如何工作的?