我在Angular 2最终版本中对observable(http.get的结果)使用subscribe方法。虽然subscribe方法的第一个参数是从后端获取数据的函数,但第二个参数是在错误时执行的函数(如状态http代码404),我不理解第三个参数/函数的含义。
希望在请求结束时(成功或错误)执行始终,我删除/停止加载指示符,但第三个函数在错误时不会被调用。
答案 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
可能会更改为最终发出不止一个事件,然后为每个事件调用第一个回调,并在最后一个事件后调用第三个回调。