我在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
答案 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
}
}