Sim*_*ias 5 javascript reactive-programming rxjs
每次调用.subscribe()Observable时,都会重新开始对每个值的处理(在下面的示例中,将为每个值调用map函数两次).
var rx = require('rx-lite');
var _ = require('lodash');
var obs = rx.Observable.fromArray([1, 2]);
var processing = obs.map(function (number) {
// This function is called twice
console.log('call for ' + number);
return number + 1;
});
processing.subscribe(_.noop, _.noop);
processing.subscribe(_.noop, _.noop);
Run Code Online (Sandbox Code Playgroud)
有没有办法让订阅给你处理过的值而不重新运行整个处理函数?
嗨@Simon Boudrias,你应该了解冷观察与热观察。
冷可观察量在订阅后开始运行,即,可观察序列仅在调用 Subscribe 时才开始将值推送给观察者。订阅者之间也不共享值..
在你的情况下,你可以使用publish或connectrefCount
var rx = require('rx-lite');
var _ = require('lodash');
var obs = rx.Observable.fromArray([1, 2]);
var processing = obs.map(function (number) {
// This function is called twice
console.log('call for ' + number);
return number + 1;
}).publish();
processing.subscribe(_.noop, _.noop);
processing.subscribe(_.noop, _.noop);
processing.connect();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
465 次 |
| 最近记录: |