我是RxJ的新手。 RxJS 6.2的版本。
我正在尝试fromEvent方法并过滤掉鼠标事件信息,但是即使clientX大于500并且它似乎显示过滤器方法也不起作用,它也会显示鼠标位置数据。
谁能告诉我我做错了什么以及如何解决?
import { Observable, fromEvent } from "rxjs";
import { map, filter } from 'rxjs/operators';
let numbers = [1, 5, 10];
const source = fromEvent(document, "mousemove");
source.pipe(
map((e: MouseEvent) => {
return {
x: e.clientX,
y: e.clientY
}
}),
filter(value => value.x < 500)
)
source.subscribe(
value => console.log(value),
e => console.log(`error: ${e}`),
() => console.log('complete')
);
答案 0 :(得分:1)
对pipe
的调用将返回一个新的可观察值-您将忽略它。它不会修改source
的观察值。
您应该订阅pipe
返回的可观察对象,而不是source
可观察对象:
const source = fromEvent(document, "mousemove");
const mappedAndFiltered = source.pipe(
map((e: MouseEvent) => {
return {
x: e.clientX,
y: e.clientY
};
}),
filter(value => value.x < 500)
);
mappedAndFiltered.subscribe(
value => console.log(value),
e => console.log(`error: ${e}`),
() => console.log('complete')
);