http.get observable上的Subscribe方法:第三个参数是什么?

时间:2017-01-14 12:38:54

标签: angular angular2-services

我在Angular 2最终版本中对observable(http.get的结果)使用subscribe方法。虽然subscribe方法的第一个参数是从后端获取数据的函数,但第二个参数是在错误时执行的函数(如状态http代码404),我不理解第三个参数/函数的含义。

希望在请求结束时(成功或错误)执行始终,我删除/停止加载指示符,但第三个函数在错误时不会被调用。

2 个答案:

答案 0 :(得分:2)

每个序列的第三个参数是完整的处理程序。它被调用时没有参数,只是通知完成的序列。

Observable.from([1,3]).subscribe(
  (v => console.log('value: ', v)),
  (e => console.log('error: ', e)),
  (() => console.log('the sequence completed!'))

会打印:

值:1

值:2

序列完成

答案 1 :(得分:1)

当observable完成时调用第三个回调。这意味着observable不会再发出任何事件。 目前Http.xxx调用返回的observable只发出一个事件并在之后完成,因此第一个和第三个回调被同时调用(一个接一个)但Http可能会更改为最终发出不止一个事件,然后为每个事件调用第一个回调,并在最后一个事件后调用第三个回调。