【发布时间】:2014-07-04 18:03:40
【问题描述】:
我最近发现了 Bacon.js,并且一直在修补但遇到一个问题。
我有一个事件流 results 用于从 AJAX 请求返回的最近 GitHub 用户。每个结果事件都是一个用户对象数组,例如,[{ 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);
【问题讨论】:
标签: javascript functional-programming reactive-programming bacon.js