在angular 4中,如何在订户之间实现可观察的共享?

在angular 4中,如何在订户之间实现可观察的共享?,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,考虑以下代码 getObservable() { return this.http.get('get_something').map( data => { return true; }, err => { return false; } ); } subscriber_1 = this.getObservable().subscribe( data

考虑以下代码

getObservable() {
    return this.http.get('get_something').map(
        data => {
            return true;
        },
        err => {
            return false;
        }
    );
}

subscriber_1 = this.getObservable().subscribe(
    data => {
        console.log("from subscriber 1", data);
    }
);

subscriber_2 = this.getObservable().subscribe(
    data => {
        console.log("from subsriber 2", data);
    }
);

for (var _i = 0; _i < 100; _i++) {
    this.getObservable()
}
getObservable(){
返回这个.http.get('get_something').map(
数据=>{
返回true;
},
错误=>{
返回false;
}
);
}
订户_1=this.getObservable().subscribe(
数据=>{
console.log(“来自订户1”,数据);
}
);
subscriber_2=this.getObservable().subscribe(
数据=>{
日志(“来自subscriber 2”,数据);
}
);
对于(var_i=0;_i<100;_i++){
this.getObservable()
}
我希望订阅方1的
和订阅方2的
能够打印
100次。但是,它只在
1
时间内打印

我认为可观察对象是向量,而不是标量,因此,无论何时调用相同的可观察对象,它都会调用所有订阅者

我一定是做错了什么

有人能帮忙吗

谢谢

以下是您要做的:

  • 创建一个函数,该函数创建一个请求并返回一些值
  • 第一个订户
    subscriber_1
    正在发出请求,当您调用subscribe函数时,它只等待当前请求接收响应
  • 当你做循环时,你只是在发出一个请求。您没有做任何事情来处理对这些请求的响应
  • 据我所知,您希望使用RxJS提供的
    主题

    let subject: Subject<any> = new Subject<any>();
    
    // Anytime the subject value is changed a notification is triggered 
    // The subscribe function is handling it 
    let subscriber_1 = subject.AsObservable().subcribe((data) => {
      console.log(data);
      return data;
    })
    
    // Trigger a notification 100 times
    for(let i = 0; i < 100; i++) {
       subject.next(i);
    }
    
    让主题:主题

    如果你不想使用RxJS,你必须实现一个可观察的模式


    这里有一个很好的例子说明。

    您在return语句中调用了两次请求,因为您调用了两次函数。您应该将类中的一个成员键入为
    *主题
    ,然后您可以对其进行sunscribe,然后向其推送值以通知观察者。您可以显示控制台输出的屏幕截图吗?(只是想确保在控制台中重复一个输出时,输出中的“计数”不会在同一行上以“气泡”的形式增加)