javascript BehaviorSubject可观察触发多次

v7pvogib  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(160)

我订阅了behaviorSubject的observable,它触发了太多次。只有当我在同一个组件路径上导航时才会发生,例如...文件夹-文件夹-文件夹,现在...删除文件触发了x3次。
订阅代码:

this.headerService.selectedItems.subscribe( {
 next:(value) =>
if (this.selectedRowsIds.size >= 1 && value === true) {
this.deleteDocs();
}... and here value comes x3 times

行为主体:
x一个一个一个一个x一个一个二个x
我试图取消订阅,发送错误触发每次当我导航,但没有任何变化。
我提到,在这种情况下,组件不会被破坏,因为我们在同一组件上打开文件夹-文件夹-文件夹,并更改路径参数。

idfiyjo8

idfiyjo81#

这个问题可能是由于许多其他因素
1.由于工艺路线的任何变更。
1.由于未在正确的时间释放值。
1.行为主体在用{}初始化new BehaviorSubject<any>({})(它发出的空对象和它持有的该值)后立即触发该值

    • 工作和可靠的代码不足,无法查看流程,如果可能,请提供详细信息。**

我的解决方案:

deleteButton :BehaviorSubject<boolean>= new BehaviorSubject<boolean>(false);

deleteTrigger(trigger: boolean) : void {
this.deleteButton.next(trigger);
}
    • trigger:boolean(这里我们只输出布尔值,因为输入总是布尔值)**
this.headerService.deleteButton.subscribe(response => {
       if(response) {
     this.selectedRowsIds.size >= 1 && value === true ? 
           this.deleteDocs() : '';
       }
   });

当从deleteButton发出一个值并且该值为true时,它将订阅操作,然后它将通过十进制操作符执行所需的逻辑

相关问题