Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rxjs 可观察:完成vs最终vs完成_Rxjs - Fatal编程技术网

Rxjs 可观察:完成vs最终vs完成

Rxjs 可观察:完成vs最终vs完成,rxjs,Rxjs,当谈到可观测序列(尤其是rxjs)时,“最终”和“完成”或“完成”之间有什么区别?每当可观测序列终止时(包括错误),总是会出现“最终”;只有在终止时没有错误,才会发生“完成” 最后: 在源可观察序列之后调用指定的操作 优雅地或例外地终止 未完成: 可观察对象在为对象调用onNext后调用此方法 最后一次,如果没有遇到任何错误 “完成”不是一个接收/可观察的概念。我刚刚看到它打印在“Complete”/“OnComplete”的示例中 注意:调用subscribe时,语法通常为: observ

当谈到可观测序列(尤其是rxjs)时,“最终”和“完成”或“完成”之间有什么区别?每当可观测序列终止时(包括错误),总是会出现“最终”;只有在终止时没有错误,才会发生“完成”

最后:

在源可观察序列之后调用指定的操作 优雅地或例外地终止

未完成:

可观察对象在为对象调用
onNext
后调用此方法 最后一次,如果没有遇到任何错误

“完成”不是一个接收/可观察的概念。我刚刚看到它打印在“Complete”/“OnComplete”的示例中

注意:调用
subscribe
时,语法通常为:

observable.subscribe([observer] | [onNext], [onError], [onCompleted]);
// Like this:
observable.subscribe(
    (value) => { ... },
    (error) => { ... },
    () => { console.log('complete!'); }
);

然而,
最后
是这样处理的:

observable.finally(() => { console.log('finally!'); })
          .subscribe(...) // you can still call subscribe

更准确地说,
finally()
操作符添加了一个dispose hander。
complete
通知只调用观察者中的complete处理程序

这在实践中意味着什么:

  • 当使用
    finally()
    时,在任何导致取消订阅的情况下都将调用回调。此时,观察员会收到
    完成
    错误
    通知,但您也会手动取消订阅

    请参见演示:

  • complete
    error
    处理程序仅在收到相应通知时调用。只能调用
    0-1
    处理程序,但不能同时调用它们

注意:对于rxjs 6+,您可以最后使用add as:
observable.finally(() => { console.log('finally!'); })
          .subscribe(...) // you can still call subscribe