我想我一定是误解了一些基本的东西,因为在我看来,这应该是一个可观察事物最基本的情况,但在我的一生中,我无法从文件中找出如何做到这一点。
基本上,我希望能够做到这一点:
// 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
}
但是我一直没能找到像推送
这样的方法。我将此用于单击处理程序,我知道他们有Observable.from事件
,但我正试图将其与React一起使用,我宁愿能够简单地在回调中更新数据流,而不是使用完全不同的事件处理系统。所以基本上我想要这个:
$( "#target" ).click(function(e) {
eventObservable.push(e.target.text());
});
我得到的最接近的是使用observer.onNext('foo')
,但这似乎并没有实际工作,这是调用观察者,这似乎是不对的。观察者应该是对数据流做出反应的东西,而不是改变它,对吗?
我只是不理解观察者/可观察者之间的关系吗?
我相信,Observable.create()
不会将观察者作为回调参数,而是作为发射器。因此,如果您想为您的可观察对象添加新值,请尝试以下方法:
var emitter;
var observable = Rx.Observable.create(e => emitter = e);
var observer = {
next: function(next) {
console.log(next);
},
error: function(error) {
console.log(error);
},
complete: function() {
console.log("done");
}
}
observable.subscribe(observer);
emitter.next('foo');
emitter.next('bar');
emitter.next('baz');
emitter.complete();
//console output
//"foo"
//"bar"
//"baz"
//"done"
是的,Subject使它更容易,在同一个对象中提供了Observable和Observator,但它并不完全相同,因为Subject允许您在一个Observable只向最后一个订阅的Observator发送数据时订阅多个Observator到同一个Observable,所以要有意识地使用它。如果你想修补它,这里有一个JsBin。
在RX中,观察者和可观察者是不同的实体。一个观察者订阅一个可观察的。可观察对象通过调用观察者的方法向其观察者发射项目。如果需要在Observable.create()
的范围之外调用observer方法,则可以使用Subject,它是同时充当观察者和可观察对象的代理。
你可以这样做:
var eventStream = new Rx.Subject();
var subscription = eventStream.subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
var my_function = function() {
eventStream.next('foo');
}
您可以在此处找到有关主题的更多信息:
我对Observables和RxJs是新手,我想对回报进行调整。如果第一个选择器返回某个值,我希望第二个选择器可以观察到。但是如果第一个选择器没有返回那个特定的值,我想返回false,而不是(false)。我已经走了这么远,但这返回了一个可观察的结果
我已经实现了一个angular应用程序,它请求一个项目列表来填充一个表格。在我的服务中,我有以下函数,它从服务器请求项目列表: 编辑:表获取数据的方式: 在HTML中,我将数据源绑定到mat表
我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块
我正在开发一个Angular应用程序,其中我正在通过HTTP进行rest调用,如下所示: 基本上,我希望我的组件在我的订阅调用中得到响应&错误,即。 如果,如何抛出错误消息,以便在订阅回调的错误参数中访问它?
在一个服务中,我有两个API调用,每个调用都返回一个可观察的,在我的组件中,我有一些条件,如果为true,我必须调用这两个函数,但我需要等待get()调用,这样我就可以使用get调用返回的参数执行post函数。如果为false,我只想用已经定义的参数调用post函数。 服务: 组成部分: 我不想重复帖子调用的代码,或者如果不可能的话,只是不要在另一个订阅()中使用订阅()。我怎么能这么做?没有异步
我正在努力处理一个简单的RxJs查询,但我似乎无法理解。如果观察对象被包装在一个对象中,我似乎不知道如何合并它们。如果我直接从flatMap返回Observable,那么这个示例可以正常工作,但我还需要在输出中输入名称。我怎样才能做到这一点? 我正在使用RxJS 5.0.0-beta.2 基本数据结构: RxJs函数: 预期结果: 实际结果: