为什么对每个订阅者调用一次(重复)可观察操作?
Why are Observable operations called once (duplicated) for every subscriber?
每次在Observable上调用.subscribe()
时,对每个值的处理都会重新开始(在下面的例子中,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);
有没有办法让subscribe给你处理过的值而不重新运行整个处理函数?
你好@Simon Boudrias你应该了解冷与热观测。
冷可观察对象在订阅时开始运行,也就是说,可观察对象序列只有在调用Subscribe时才开始向观察者推送值。值也不能在订阅者之间共享 ..
在您的情况下,您可以使用publish
与connect
或refCount
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();
相关文章:
- 如何更新按钮内部的文本,每行重复一次
- 角度ng重复一次
- ng只重复添加项目一次
- 如何在重复满足条件时调用一次辅助函数
- 如何每 5 分钟重复一次 mysql 查询
- AngularJS指令在ng-repeat中为每个项目设置不同的值,只重复一次
- jQuery 每秒在 for 循环内重复一次
- 如何编写允许某些字符仅重复一次的正则表达式
- D3 日期范围(按小时);每 7 天重复一次
- 鼠标移动事件每秒钟重复一次
- 3个功能每隔90分钟重复一次,间隔30分钟
- 如果请求每200毫秒重复一次,如何只显示一次
- 如何让一个元素在n -repeat中只重复一次
- SetInterval只重复一次.如何修复它
- VueJS v-只重复一次
- 每3秒重复一次动画
- 使用setInterval或setTimeout获取每x秒重复一次的函数
- JS/jQuery函数意味着只重复一次触发器
- 每4秒重复一次代码
- 完整的日历每两天重复一次