【发布时间】:2020-04-06 19:09:23
【问题描述】:
我想使用 observable 来向我的 Angular 应用程序的各个部分发出关于“异常状态”的信号,但我意识到我并不真正了解它们是如何工作的。
在下面的代码中,我构建了一个观察者对象,并从中创建了一个可观察对象。我想做的是弄清楚如何在 Observable.create 方法范围之外调用“next”方法,以便我可以将任意事件插入流中。直接在观察者身上调用 next 似乎不是答案。
var observer = {
next: function(value) {
this.myvalue="last value: " + value;
},
error: function(error) {
console.log(error);
},
complete: function() {
console.log('completed');
},
myfunction: function() {
this.myvalue = "Penguins"
},
myvalue: ""
}
let myobs$ : Observable<any> = Observable.create(function(obs) {
obs.next("Some foo");
obs.next("Other foo");
})
let foo=myobs$.subscribe((observer)=> {
console.log("This is the subscription: ", observer)
})
setTimeout(function() {
observer.next("This is a late breaking value");
console.log(observer.myvalue);
}, 2000);
}
此代码产生以下控制台输出:
This is the subscription: Some foo
This is the subscription: Other foo
last value: This is a late breaking value
所以看起来直接在观察者对象上调用next(我在底部的超时函数中尝试过)不会在订阅中产生值。
也很清楚,我想我不明白这些东西应该如何工作。了解如果我设置了一个可观察对象并且我想“手动”将数据插入到订阅者接收的流中,我该怎么做?我可以看到你是如何使用鼠标点击或 ajax 请求等事件传播的事情来做到这一点的,但我想做的是创建一个流,当某些有趣的事情发生在不同的地方时,我可以临时提供它我的代码。
【问题讨论】:
标签: angular typescript rxjs observable