2015-04-01 2 views
1

Функциональные реализации реактивного программирования, по-видимому, имеют наблюдателя как пассивно зависящие от потоков, предоставляющих им значения.Как я могу вывести значение из потока?

Можно ли запросить новое значение из нисходящего потока?

Например, если у меня есть поток, который служит координатам яблока в игре Змея, если яблоко было съедено, то как я могу попросить новое значение?

Исходный поток не знает, что требуется новое яблоко.

This имеет интересную реализацию, которая использует рекурсию.

function apple() { 
    var applePos = randomPos() 
    return 
    position 
     .filter(p => p.equals(applePos)) 
     .take(1) 
     .flatMapLatest(apple) 
     .toProperty(applePos) 
} 

Есть ли более прямой способ сделать это?

Возможно, у меня мог бы быть поток, который знает, когда значение было принято, и немедленно генерирует новый и удерживает его в буфере.

ответ

1

Исходный поток не знает, что требуется новое яблоко.

Я думаю, что проблема. В правильной FRP функция apple должна иметь параметр с потоком событий apple eaten, чтобы он мог знать, когда производить новое яблоко.

+0

Ага ... да, поток яблока слушает съеденное событие. –

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

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