在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,然后向其推送值以通知观察者。您可以显示控制台输出的屏幕截图吗?(只是想确保在控制台中重复一个输出时,输出中的“计数”不会在同一行上以“气泡”的形式增加)