2017-01-14 36 views
0

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

希望它执行总是当请求已经结束(成功或错误),我删除/停止加载它的指示器,但第三个函数不会错误调用。

回答

0

当observable完成时,将调用第三个回调函数。这意味着观察者不会再发射任何事件。 当前由Http.xxx调用返回的可观测量仅发出一个单一事件并在之后完成,因此第一个和第三个回调被同时调用(一个接一个),但Http可能更改为最终发出多个事件,然后每个事件都会调用第一个回调,第三个回调在最后一个事件之后被调用一次。

+0

所以我能得到其中之一:1,3或2,3,但是3被称为无论如何? –

+1

在最后一次事件之后,应该总是调用2或3中的一个。在成功的情况下,调用3,如果发生错误,则只调用2(但不是3)。 –

+0

所以我必须停止加载1和2中的指标。我怎样才能消除这种重复? –

2

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

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

将打印:

值:1

值:2

的顺序完成

相关问题