2014-12-01 4 views
0

Я пытаюсь погрузиться в реактивное программирование. Поэтому я решил создать простой чат с шифрованием RSA, используя библиотеку JavaScript Bacon.Случайные числа с Bacon.js

Вопросы, которые у меня есть: Каков наилучший способ создания потока случайных чисел с помощью Бэкона? После этого я хочу фильтровать поток случайных чисел на случайный поток простых чисел. Каков наилучший способ сделать это?

ответ

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() возвращает новый поток Bacon каждый раз. Вы, скорее всего, не хотите прикреплять несколько подписчиков к одному и тому же потоку случайных чисел, иначе вы будете повторно использовать одни и те же случайные числа в нескольких местах. Также убедитесь, что вы всегда отменяете подписку на случайный числовой поток синхронно; не пытайтесь сначала объединить его с другим потоком, иначе поток случайных чисел заблокирует работу остального кода, поскольку он генерирует неограниченные случайные числа.

И вы должны использовать window.crypto.getRandomValues вместо Math.random для криптографических целей.

+0

Что делать, если я попытаюсь объединить поток, полученный путем сопоставления этого потока с другими потоками? – gyzerok

+0

gyzerok: если у вас есть конкретный пример, возможно, jsFiddle, было бы легче помочь. Мне трудно найти конкретный прецедент для этого потока. – OlliM

+0

https://github.com/gyzerok/reactive-cryptochat/blob/master/rsa.js Там я использую этот поток для генерации значений e, d и m для моего приложения чата rsa. Спасибо, что помогли мне. – gyzerok

 Смежные вопросы

  • Нет связанных вопросов^_^