我开始写一个简单的脚本,但遇到一个问题,请帮我解决。
在代码中创建2个线程:播放器,墙:
const walls = Rx.Observable
.range(1, 10)
.map(() => {
return {
x: helper.randomIntFromZero(canvas.width - wallWidth),
y: helper.randomIntFromZero(canvas.height - wallHeight)
};
})
const player = move.map(
e => {
const coords = { x: 0, y: 0 }
if (e.keyCode == 37) {
coords.x -= (player.x <= 0) ? 0 : deltaCoord;
}
if (e.keyCode == 38) {
coords.y -= (player.y <= 0) ? 0 : deltaCoord;
}
if (e.keyCode == 39) {
coords.x += (player.x + player.width >= canvas.width) ? 0 : deltaCoord;
}
if (e.keyCode == 40) {
coords.y += (player.y + player.width >= canvas.height) ? 0 : deltaCoord;
}
return coords;
}
)
.startWith({ x: 0, y: 0 })
我同时订阅了它们:
Rx.Observable.combineLatest((player, walls) => {
console.log(player, walls);
})
.subscribe((player, walls) => {
console.log('player', player);
console.log('walls', walls);
});
问题是最后一段代码中的console.logs没有输出到控制台。
Live DEMO here.
最佳答案
您没有向combineLatest
提供可观察的东西。
这是您应该怎么做:
Rx.Observable.combineLatest(player, walls)
它会给你一个数组,所以你应该这样订阅:
.subscribe(([player, walls]) => {
console.log('player', player);
console.log('walls', walls);
});
关于javascript - 为什么在CombineLatest之后,subscribe()不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50546174/