如何订阅最后一个可观察的并在rxjs中执行功能?

时间:2020-03-13 17:03:00

标签: rxjs rxjs5

嗨,我的项目中有一个小代码段。

它基本上订阅了一个角度表单组,并调用了一个方法来生成svg。

表单组大约有6个表单控件。问题是有时候我更改表单控件的值时,它将为另一个表单控件设置另一个值。结果,当我更改某些窗体控制值时,它将导致generatePerformanceGraph被多次调用。我该如何预防这个问题。

简而言之,基本上我想要的是表单组中有更改时,我想订阅最后一个可观察对象,然后执行一次generatePerformanceGraph。

this.formGroup.valueChanges.subscribe(formValue => {
  if(this.formGroup.valid) {
    this.generatePerformanceGraph(formValue);
  }
});

我尝试了以下方法,但是效果如何。

this.formGroup.valueChanges.
pipe(
  distinctUntilChanged()
) .subscribe( formValue => {
  if(this.formGroup.valid) {
    this.generatePerformanceGraph(formValue);
  }
});

1 个答案:

答案 0 :(得分:1)

尝试class CustomModelAdmin(admin.ModelAdmin): actions = ['custom_action'] def custom_action(self, request, queryset): pass custom_action.short_description = "Custom Action" admin.site.unregister(User) admin.site.register(User, CustomModelAdmin) ,时间由您决定debounceTimems会忽略彼此之间debounceTime中发生的事件,而仅接受最后一个。

https://www.learnrxjs.io/learn-rxjs/operators/filtering/debouncetime

200ms

要采用this.formGroup.valueChanges. pipe( debounceTime(200), ) .subscribe( formValue => { if(this.formGroup.valid) { this.generatePerformanceGraph(formValue); } }); 的方式,您必须采用另一种方式,因为distinctUntilChanged是对象。

formValue