Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
Angular 什么是可观察的,观察者和订阅的角度?_Angular_Rxjs_Angular6_Rxjs5 - Fatal编程技术网

Angular 什么是可观察的,观察者和订阅的角度?

Angular 什么是可观察的,观察者和订阅的角度?,angular,rxjs,angular6,rxjs5,Angular,Rxjs,Angular6,Rxjs5,我正在学习角度,我在这些可观察的,观察的和订阅中感到困惑 事情所以请解释一下。这里有一个简单的视觉效果,可以看出区别: 如上所述。。。可观察的是事件或数据流。它们通常从角度方法返回,例如http.get和myinputBox.valueChanges 订阅“启动”可观察流。如果没有订阅(或异步管道),流将不会开始发出值。这类似于订阅报纸或杂志。。。在订阅之前,您不会开始获取它们 subscribe方法接受一个观察者。观察员有三种方法: 每次从可观察对象发出项目时处理的方法 var o

我正在学习角度,我在这些可观察的,观察的和订阅中感到困惑
事情所以请解释一下。

这里有一个简单的视觉效果,可以看出区别:

如上所述。。。可观察的是事件或数据流。它们通常从角度方法返回,例如
http.get
myinputBox.valueChanges

订阅“启动”可观察流。如果没有订阅(或异步管道),流将不会开始发出值。这类似于订阅报纸或杂志。。。在订阅之前,您不会开始获取它们

subscribe方法接受一个观察者。观察员有三种方法:

  • 每次从可观察对象发出项目时处理的方法

  •     var observable = Observable.create((observer: any)=>{
           observer.next("Hii")
           observer.next("how are you")
           observer.complete()
        observer.next("This will not send to observer")
    });
    
    observable.subscribe(
        (data: any) => console.log(data), // for handling data
        (error: any) => console.log(error), // for handling error
        () => console.log('completed'); // for handling completion
    
  • 处理发生的任何错误的方法

  • 当观察者完成时清除任何内容的方法。最后一个在处理Angular的观测值时很少使用

希望这有帮助


(我也同意……试图通过文档中的树看到森林是一个相当大的挑战。我知道他们正在努力改进它们。)

以下是一些关键点:

1) 定义:“可观察和观察者”是一种从发布者传递到订阅者的消息模式。
2) 功能流程:

  • 可观察的是创造出来的

  • 观察者订阅可观察的

  • Observable可以将消息传递给观察者
  • 每一次,当被观察者传递一条信息而不是一条信息时,它都会被观察者接收到
3) 观察者和观察者的实时使用

  • 在接收来自AJAX的响应时
  • 在客户端(浏览器)中执行大型任务时

可观察的
可以被认为是各种数据源(例如:(用户输入)事件、httprequest等)

这里创建我们的自定义可观察

    var observable = Observable.create((observer: any)=>{
       observer.next("Hii")
       observer.next("how are you")
       observer.complete()
    observer.next("This will not send to observer")
});
observable.subscribe(
    (data: any) => console.log(data), // for handling data
    (error: any) => console.log(error), // for handling error
    () => console.log('completed'); // for handling completion
  • next()用于向观察者发送值
  • complete()表示通知observable的完成
观察者基本上就是订阅“可观察”的人

    var observable = Observable.create((observer: any)=>{
       observer.next("Hii")
       observer.next("how are you")
       observer.complete()
    observer.next("This will not send to observer")
});
observable.subscribe(
    (data: any) => console.log(data), // for handling data
    (error: any) => console.log(error), // for handling error
    () => console.log('completed'); // for handling completion
))

在这里,您可以了解更多有关可观测的信息
尝试用一个非常简单的例子来解释:-

  • 可观察的就像其他人的youtube频道。((它不时上传新的视频(数据),因此它是您的数据源)

  • 你的youtube帐户是一个观察者

  • 您的youtube帐户(观察者)仅当您订阅了其他youtube频道(可观察)时,您的youtube帐户才能收到关于其他人的youtube频道(可观察)是否上载了新视频(有新数据)或制作了实况流(新事件)的通知

  • (观察员订阅Observable以监听新数据/任何事件)


    当observable是一个数据源时,subscribe就像一个方法/函数,observable通常站在您这边