0

実装する簡単な方法はありcombine3ますか?

var Bacon = require('baconjs')

function emit(delay)
{
        var s = new Bacon.Bus()
        setTimeout(function ()
        {
                console.log("emit", delay)
                s.push(delay)
        }, delay)
        return s.toProperty()
}

var foo = emit(500)
var bar = emit(1000)
var baz = emit(1500)

function consume(foo, bar, baz)
{
        console.log("consumed", foo, bar, baz)
}

function combine3(consume, foo, bar, quux)
{
        Bacon.combineWith(function (foo, bar, quux)
        {
                return { foo : foo, bar : bar, quux : quux }
        }, foo, bar, quux)
        .onValue(function (x)
        {
                consume(x.foo, x.bar, x.quux)
        })
}

combine3(consume, foo, bar, baz)

ダミーのコンシューマーが存在combineWithしない限り、単独では機能しないことに注意してください。onValue()

Bacon.combineWith(consume, foo, bar, baz).onValue(function () {})

回避策はまだハックのように見えます。次の 3 つのバージョンは を呼び出しませんconsume():

Bacon.when([foo, bar, baz], consume)
Bacon.update(911, [foo, bar, baz], consume)
Bacon.zipWith(foo, bar, baz, consume)

当面のタスクは、3 つのパラメーターに基づいて HTML テーブルをフィルター処理することです。soconsumeは、現在選択されているフィルタリング条件に基づいてテーブルを描画し、新しい を生成しませんObservables

また、もっと簡単に書く方法はありますemit()か?

4

1 に答える 1