代码之家  ›  专栏  ›  技术社区  ›  TSG

删除observer中的订阅

  •  0
  • TSG  · 技术社区  · 7 年前

      // Allow the user to navigate away from this page
      public canDeactivate(): Observable<boolean> {
    
        // Popup a prompt dialog
        const title = 'Lose Changes';
        const prompt = 'Are you sure you want to lose your changes?';
        this.dialogWindow.show(EDialogTypes.EDialogYesNo, EDialogStyles.EDialogStyleWarning, title, prompt);
    
        return Observable.create(observer => {
          this.dialogWindow.observable.subscribe(buttonPressed => {
            const proceed = (buttonPressed === EButtonPressed.EButtonPressedYes);
            console.log('Allow proceed: ' + proceed);
            observer.next(proceed);
            observer.complete();
          });
        });
      }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Bruno João    7 年前

    您可以保存对变量的订阅,并在获得所需内容后使用它取消订阅。类似这样:

    return Observable.create(observer => {
      let subscription = this.dialogWindow.observable.subscribe(buttonPressed => {
        const proceed = (buttonPressed === EButtonPressed.EButtonPressedYes);
        console.log('Allow proceed: ' + proceed);
        observer.next(proceed);
        observer.complete()
        subscription.unsubscribe(); // here you unsubscribe
      });
    });