随机数字流与Bacon.js

时间:2014-12-01 10:33:32

标签: javascript random bacon.js

我正在尝试反应性编程。所以我决定用Bacon javascript库创建一个简单的RSA加密聊天。

我的问题: 使用培根创建随机数流的最佳方法是什么? 在它之后我想过随机数流到随机素数流。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

我不确定培根流是否适合用于此,但是你可以这样做。

function makeRandomNumber() {
  return Math.random();
}

function makeRandomStream() {
  return Bacon.fromBinder(function(sink) {
    while(sink(makeRandomNumber()) === Bacon.more) {}
    return function() {};
  });
}

// example of using the random stream
makeRandomStream().filter(function(x) {
  return x > 0.5;
}).take(5).onValue(function(x) {
  console.log('random number', x);
});

请注意,makeRandomStream()每次都会返回一个新的培根流。您很可能不希望将多个订阅者附加到同一个随机数流,否则您将在多个位置重复使用相同的随机数。还要确保始终同步取消订阅随机数流;不要先尝试将它与另一个流组合,否则随机数流将阻止其余的代码运行,因为它会生成无限的随机数。

并且您希望使用window.crypto.getRandomValues代替Math.random进行加密用途。