Я новичок в Rx.js и ища базовую помощь с концепциями FRP. У меня есть один поток с использованием generateWithRelativeTime
, который поддерживает цикл игры, и поток, который отслеживает разрешение экрана. Моя проблема с моим текущим кодом заключается в том, что мой игровой цикл работает только при изменении разрешения экрана.Что делать, если один поток зависит от значения от другого?
Поток, созданный моей функцией модели, требует последнего значения из res $.
function model(res$) {
return res$.map(res => {
const rows = ceil(res[1]/CELL.HEIGHT)+1
const cols = ceil(res[0]/CELL.WIDTH)+1
return Observable.generateWithRelativeTime(
initWorld(rows, cols, 1.618),
noOp,
world => step(world),
noOp,
_ => 100,
Rx.Scheduler.requestAnimationFrame
).timeInterval()
});
}
function intent() {
return Observable.fromEvent(window, 'resize')
.map(e => [e.currentTarget.innerWidth, e.currentTarget.innerHeight])
.debounce(100, Rx.Scheduler.requestAnimationFrame)
.startWith([window.innerWidth, window.innerHeight])
}
model(intent())
Спасибо! Это фактически зафиксировало это. Ожидаемое поведение заключалось в том, что игровой цикл должен запускаться, и каждый раз, когда он запускается, используйте последнее разрешение из потока res $. Теперь это работает :) Спасибо! – Brendan
Кроме того, да, я играю с Cycle.js :) – Brendan
Приятно, не могли бы вы принять или перенести ответ, чтобы сообщить, что это правильно или полезно для других читателей, которые могут наткнуться на этот вопрос из поиска Google? – user3743222