Javascript 多次观察到火灾
我有一个api,每隔一段时间就会在回调上触发一个事件:Javascript 多次观察到火灾,javascript,observable,Javascript,Observable,我有一个api,每隔一段时间就会在回调上触发一个事件: api(params, (error, result) => console.log('PUBSUB', result) ); 这意味着我在console.log中看到此api结果的多个日志 我希望使用一个可观察的方法来实现这一点 const obs = Observable.bindNodeCallback((params, callback) => api(params, callback) ); obs.sub
api(params, (error, result) =>
console.log('PUBSUB', result)
);
这意味着我在console.log中看到此api结果的多个日志
我希望使用一个可观察的方法来实现这一点
const obs = Observable.bindNodeCallback((params, callback) =>
api(params, callback)
);
obs.subscribe(data => console.log('OBSERVABLE', data));
我只看到一个console.log。它与相关,但我无法找到一种方法让它多次开火。rxjs一开始非常混乱。你最好先创建一个
主题
,然后再创建一个可观察的
,其他方法可以订阅该主题
const testData = {myParam: ["param1", "param2"], callback: myCallback};
const callbackSubject = new Subject();
const callbackObservable = callbackSubject.asObservable();
callbackObservable.subscribe(data => console.log(data));
callbackSubject.next(testData); // subscribe is called
我最终选择了以下几点:
const obs = params => Observable.create(observer => {
api(params, (error, result) => {
if (error) {
observer.error(error);
} else {
observer.next(result);
}
});
});
如果有人有更好的想法,我会很高兴更改已被接受的答案。我知道这是一篇老文章,但它可能会帮助某些人:
我添加了[reactjs]标记,我想这是正确的?我使用的是react,但这个问题与react无关。据我所知,与Observable相关的任何内容都不是核心JS语言的一部分,因此它似乎绝对相关。Observable可以在任何地方使用,它与react无关。我在Angular 4和TypeScript中使用它,所以..“不是核心JS语言的一部分”->你是什么意思?
Observable.fromEventPattern(
(handler) => {
// unsubscribtion can be returned
return api(params, (error, result) => {
// handle errors
handler(result)
})
},
(handler, unsubscribe) => { unsubscribe(); }
)