Bacon.js“splitting"包含数组的事件,每个元素包含多个事件
Bacon.js "splitting" an event containing an array into multiple events for each element
我最近发现了Bacon.js,一直在修补,但遇到了一个问题。
我有一个事件流results
最近GitHub用户从AJAX请求返回。每个结果事件都是一个用户对象数组,例如,[{ id: 1, login: 'somlor' }, { id: 2, login: 'raimohanska' }, ...]
问题:我想创建一个新的users
事件流,从结果事件馈送并返回实际用户对象作为单个事件。这可能吗?
这是我的代码的结果流,这是按预期工作:
// get some recent github users
var ajaxStream = function() {
var randomOffset = Math.floor(Math.random() * 500);
var url = 'https://api.github.com/users?since=' + randomOffset;
return Bacon.fromPromise($.ajax(url));
}
// refresh click stream, start as true to trigger initial ajax call
var refresh = $('a.refresh').asEventStream('click')
.map(true)
.startWith(true);
// latest results stream. each event is an array of user objects.
var results = refresh.flatMapLatest(ajaxStream);
这不能工作。为每个results
数组创建单个事件流。我希望它将每个results
数组"拆分"为该数组中的每个用户对象的新事件。
// stream of individual users created from each result event array
var users = results.map(function(e) { return new Bacon.fromArray(e); });
任何想法?
谢谢,
肖恩
更新:
这就是我要找的:
var users = results.flatMap(Bacon.fromArray);
如果我正确理解了这个问题,您需要使用. flatmap来创建流。
results.flatMap(Bacon.fromArray).onValue(function(v){ console.log(v) });
相关文章:
- 如何创建包含多个视频的视频横幅
- 比较包含多个值对的两个JavaScript数组
- 需要一个用于AJAX的Javascript库,其中包含多部分/表单数据
- 在Knockout js中创建一个包含多行的表,而不需要推送
- 包含多个缩略图幻灯片的公文包
- 如何包含多个 jquery 版本以使多个 jquery 插件工作
- 如果我设置“;listenToOnce”;为同一事件触发多次
- 如何检查url是否包含多个字符串.Javascript/jquery
- 火灾事件最多每x秒发生一次
- 一个表单包含多个提交操作
- 在一个网站上包含多个声音文件
- 包含多个'对象'
- 每个事件具有多个事件处理程序的SignalR
- 在keyup事件中指定click事件处理程序会导致click事件被多次激发
- 使用requirejs加载一个包含多个类的文件(grunt-concat)
- 一个动画javascript中包含多个图像
- 由于包含多个javascript/需要,jQuery事件多次触发
- 一个目标中包含多个值的多个JavaScript OnClick事件
- Bacon.js“splitting"包含数组的事件,每个元素包含多个事件
- JWplayer在一个页面中包含多个播放器和事件处理程序