【发布时间】:2021-04-21 20:55:46
【问题描述】:
我尝试学习 RxJs。我想用它来拖放对象。我设法做到了。但我正在创建以下drag$ Observable:
const drag$ = mousedown$.pipe(
switchMap((start) => {
return merge(
mousemove$.pipe(
map((move) => {
move.preventDefault();
return {
type: "move",
x: move.x - start.x,
y: move.y - start.y,
};
}),
takeUntil(mouseup$)
),
mouseup$.pipe(
map((endPos) => {
return {
type: "end",
x: endPos.clientX,
y: endPos.clientY,
};
}),
take(1)
)
);
})
);
困扰我的是,我将merge 运算符用作接收两个可观察对象作为参数的运算符。在管道内执行合并时,是否有一种优雅的方式来重新定义相同的 drag$ 运算符?
【问题讨论】:
-
别被打扰了。
merge需要两个 observable,因此很自然地将它们作为参数传递。 -
不一定。在此处查看示例 2 的代码:learnrxjs.io/learn-rxjs/operators/combination/merge
-
@Achim 即deprecated。
-
啊,好吧!很高兴知道!谢谢!
-
当然。小心教程网站
标签: javascript reactjs typescript rxjs