我怎样才能用Bacon.js代替Promise来表达初始过程?

时间:2014-06-30 10:37:44

标签: javascript promise deferred frp bacon.js

我总是为初始流程做这样的事情:

$.when(dom(), webrtc(), websocket('wss://example.com/'), sleep(3000)).then(load, fail);

domwebrtcwebsocketsleep是Promise对象。此表达式可用于加载某些并行进程以进行启动。

现在我想知道如何用Bacon.js表达这些东西,这是一种功能性反应式编程方式。

任何想法都会受到赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先,将Promises混合并匹配到您的BaconJS代码中是完美的。也就是说,鉴于抽象,BaconJS有fromPromise方法。

使用Bacon.fromPromise

var ready = Bacon.fromPromise($.when(dom(), 
                                     webrtc(),
                                     websocket('wss://example.com/'),
                                     sleep(3000)))

ready.onValue(function(value){
    console.log("All ready");
});

请注意,这里的功能是组合这些流,在初始化阶段 - 你很少需要这个,所以如果我是你,我可能会坚持承诺。