【发布时间】:2016-01-24 06:46:06
【问题描述】:
我想我一定是误解了一些基本的东西,因为在我看来,这应该是 observable 的最基本情况,但对于我的生活,我无法从文档中弄清楚如何做到这一点。
基本上,我希望能够做到这一点:
// create a dummy observable, which I would update manually
var eventObservable = rx.Observable.create(function(observer){});
var observer = eventObservable.subscribe(
function(x){
console.log('next: ' + x);
}
...
var my_function = function(){
eventObservable.push('foo');
//'push' adds an event to the datastream, the observer gets it and prints
// next: foo
}
但是我一直找不到像push 这样的方法。我将它用于点击处理程序,我知道他们有Observable.fromEvent,但我正在尝试将它与 React 一起使用,我宁愿能够简单地在回调中更新数据流,而不是使用完全不同的事件处理系统。所以基本上我想要这个:
$( "#target" ).click(function(e) {
eventObservable.push(e.target.text());
});
我得到的最接近的是使用observer.onNext('foo'),但这似乎并没有真正起作用,并且它被调用了观察者,这似乎不正确。观察者应该是对数据流做出反应的东西,而不是改变它,对吧?
我只是不了解观察者/可观察者的关系吗?
【问题讨论】:
-
看看这个来澄清你的想法(你一直缺少的反应式编程的介绍):gist.github.com/staltz/868e7e9bc2a7b8c1f754。这里也有很多资源可以提高你的理解:github.com/Reactive-Extensions/RxJS#resources
-
我检查了第一个,似乎是一个可靠的资源。第二个是一个很棒的列表,我在上面找到了aaronstacy.com/writings/reactive-programming-and-mvc,它帮助我发现了 Rx.Subject,它解决了我的问题。那谢谢啦!一旦我写了更多的应用程序,我会发布我的解决方案,只是想稍微测试一下。
-
呵呵,非常感谢你提出这个问题,我正准备用同样的代码示例问同样的问题:-)