Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在RxJS中基于点击持续采样数据?_Javascript_Rxjs - Fatal编程技术网

Javascript 如何在RxJS中基于点击持续采样数据?

Javascript 如何在RxJS中基于点击持续采样数据?,javascript,rxjs,Javascript,Rxjs,我有一个可以观察到的有趣数据,这些数据随着时间的推移而变化(BehaviorSubject): const obs=。。。 然后我有一个单击操作(主题,按下按钮后调用.next()): const clickAction=。。。 我希望这样做: obs.pipe(示例(单击操作)).subscribe(数据=>console.log(数据)) 我遇到的问题是:当我连续多次单击按钮时,它只会将消息记录一次到控制台。如果obs发生更改,则再次单击将再次登录到控制台 预期行为:每次单击按钮时,也

我有一个可以观察到的有趣数据,这些数据随着时间的推移而变化(
BehaviorSubject
):

const obs=。。。
然后我有一个单击操作(
主题
,按下按钮后调用
.next()
):

const clickAction=。。。
我希望这样做:

obs.pipe(示例(单击操作)).subscribe(数据=>console.log(数据))
我遇到的问题是:当我连续多次单击按钮时,它只会将消息记录一次到控制台。如果
obs
发生更改,则再次单击将再次登录到控制台

预期行为:每次单击按钮时,也应记录数据(无论是否已更改)

我原以为
sample
应该这样做,但我认为一定有更好的方法来做到这一点?

在您的案例中不起作用,因为:

sample
查看可观察到的源,并发出它所发出的值 自上次采样以来最近发出的,,除非 自上次采样以来,震源未发出任何信号


最晚从 用于将单击事件与源可观测的最新发射值组合

clickAction.pipe(
  withLatestFrom(obs),
  map(([notifier, source]) => source)
).subscribe(console.log)

我最终实现了以下目标:

导出函数时(通知程序:可观察):MonoTypeOperatorFunction{
返回(来源:可观察)=>{
const latest=withLatestFrom(源)(通知程序)
常量映射器=映射(([源]:[任何,T])=>源)
返回映射器(最新版本)
}
}

可以这样使用:
obs.pipe(在(单击操作时))

您是否尝试了
obs
示例(单击操作)
?此外,有一些代码将有助于我们找到更好的方法。