我正在尝试反应性编程。所以我决定用Bacon javascript库创建一个简单的RSA加密聊天。
我的问题: 使用培根创建随机数流的最佳方法是什么? 在它之后我想过随机数流到随机素数流。这样做的最佳方式是什么?
答案 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
进行加密用途。