它是如何工作的观察者确认?

时间:2018-01-16 14:44:37

标签: javascript angular typescript

在示例中, public onRemoving(tag): Observable<any> { const confirm = window.confirm('Do you really want to remove this tag?'); return Observable.of(tag).filter(() => confirm); } 做了什么?它是如何工作的?

const confirm = false;
this.mapDlg
      .confirm(args)
      .subscribe(res => {
        if (res != null) {
          confirm = true;
        }
      });

return Observable
      .of(tag)
      .filter(() => confirm);

我尝试适应我的情况:

.confirm()

但它确实有效,confirm返回Observable,我抓住了值public onRemoving(tag: any): Observable<any> { const args = new MultiDlgArgs(); args.type = 'confirmation'; return Observable.create(observer => { return this.mapDlg .confirm(args) .subscribe(res => { return false; }); }); }

我还尝试这样做:

public onRemoving(tag: any): Observable<any> {

    const args = new MultiDlgArgs();
    args.type = 'confirmation';

    return new Observable<boolean>(observer => {

        this.mapDlg
          .confirm(args).map((res) => {
          if (res == null) {
            observer.next(false);
          } else {
            observer.next(true);
          }
        });

      }
    );
  }

我尝试过的另一种方式:

 vm.download = function(text) {
    var data = new Blob([text], { type: 'text/plain;charset=utf-8' });
    FileSaver.saveAs(data, 'text.txt');
  };

2 个答案:

答案 0 :(得分:2)

你可能会认为Observable是关于恒定的数据流,与Promise相反只会触发一次。 .of() - 创建一个Observable,它发出指定范围内的一系列数字(或任何其他数据)。 docs

你可能需要这样的东西:

this.mapDlg
      .confirm(args)
      .subscribe(res => {
        if (res != null) {
          Observable.create((observer)=> {
            observer.next(true);
        });
        }
      });

答案 1 :(得分:1)

它创建一个您可以订阅的Observable。

您可以看到该函数返回一个键入为Observable<any>的变量。

这是我学习创建Observable的方法,而不是Observable.create方法。