我无法退回无法观察的新外观

时间:2019-12-09 22:23:11

标签: angular observable

我在Observables方面遇到问题

我有下一个代码:

 public save(): any {
        var that = this;
        try {
            debugger;//1
            return  new Observable((observer) => {        
                observer.next("123");

                debugger; //2
            })
        } catch (e) {
            debugger; //3

        }
    }

我正在导入下一个模块:

import { HttpHeaders, HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/internal/Observable';

调试将在 debugger:// 1 中停止,但永远不会在 debugger中进行; // 2

我尝试过:     从'rxjs'导入{Observable};

组件是:

save().subscribe(res => {
    debugger; //4
});

但是什么也没有。它不会在调试器// 4

中停止

怎么了?它应在 debugger // 2; // 4

处停止

我正在使用角度8

2 个答案:

答案 0 :(得分:2)

关于可观察物的一件事是它们是“懒惰的”。除非您订阅可观察对象,否则它不会发出任何值。

由于您的save方法返回了observable。为了调用调试器2,您必须订阅该返回。

例如

someMethod() {
  const saved = this.save();
  saved.subscribe(() => {
    // debugger 2 will be invoked ...
  })

答案 1 :(得分:0)

因为您已经下了流(observer.next(“ 123”))。

所以plz改变了位置,如下所示。

public save(): any {
        var that = this;
        try {
            debugger;//1
            return  new Observable((observer) => { 
                debugger; //2

                observer.next("123");
            })
        } catch (e) {
            debugger; //3

        }
    }