Functional Javascript BaconJS,如何将更多值推送到事件流?
Functional Javascript BaconJS, how can I push more values to an event stream?
我正在尝试在 BaconJS 中创建一堆 AJAX 响应。这以先进先出的方式处理它们,但每个 'out' 事件都应等待用户输入。
这是我现在所在的位置:Live JSBin
var pages = Bacon.fromArray([1,2,3])
var next = $("#next").asEventStream('click').map(true);
pages.flatMapConcat(asyncFunction).zip(next).log("responses")
function asyncFunction(page) {
// Simulating something like an AJAX request
return Bacon.later(1000 + (Math.random() * 3000), "Page "+ page)
}
目前,每次单击 #next
时,这会从 pages
EventStream
同步输出一个事件,这是我想要的行为。
但是,我无法弄清楚如何将更多值推送到 pages
EventStream
。我试图用 Bus
替换页面 EventStream,并推送这样的值(这不起作用)。
var pages = new Bacon.Bus()
pages.push("value")
如何将更多值推送到 EventStream
?
我知道这是一辆旧车 post,但公交车可以。只需将数字(之前有一个数字数组)推入其中:
var pages = new Bacon.Bus();
// Bacon.fromArray([1,2,3])
var next = $("#next").asEventStream('click').map(true);
pages.flatMapConcat(asyncFunction).zip(next).log("responses")
function asyncFunction(page) {
// Simulating something like an AJAX request
return Bacon.later(1000 + (Math.random() * 3000), "Page "+ page)
}
pages.push(1);
pages.push(2);
pages.push(3);
I cloned your jsbin and changed it to use bus
如前所述,您可以使用 fromEvent or from fromBinder
之类的方式流式传输页面值的来源
我正在尝试在 BaconJS 中创建一堆 AJAX 响应。这以先进先出的方式处理它们,但每个 'out' 事件都应等待用户输入。
这是我现在所在的位置:Live JSBin
var pages = Bacon.fromArray([1,2,3])
var next = $("#next").asEventStream('click').map(true);
pages.flatMapConcat(asyncFunction).zip(next).log("responses")
function asyncFunction(page) {
// Simulating something like an AJAX request
return Bacon.later(1000 + (Math.random() * 3000), "Page "+ page)
}
目前,每次单击 #next
时,这会从 pages
EventStream
同步输出一个事件,这是我想要的行为。
但是,我无法弄清楚如何将更多值推送到 pages
EventStream
。我试图用 Bus
替换页面 EventStream,并推送这样的值(这不起作用)。
var pages = new Bacon.Bus()
pages.push("value")
如何将更多值推送到 EventStream
?
我知道这是一辆旧车 post,但公交车可以。只需将数字(之前有一个数字数组)推入其中:
var pages = new Bacon.Bus();
// Bacon.fromArray([1,2,3])
var next = $("#next").asEventStream('click').map(true);
pages.flatMapConcat(asyncFunction).zip(next).log("responses")
function asyncFunction(page) {
// Simulating something like an AJAX request
return Bacon.later(1000 + (Math.random() * 3000), "Page "+ page)
}
pages.push(1);
pages.push(2);
pages.push(3);
I cloned your jsbin and changed it to use bus
如前所述,您可以使用 fromEvent or from fromBinder
之类的方式流式传输页面值的来源