【发布时间】:2021-06-14 18:40:04
【问题描述】:
谁能解释一下为什么这个打字稿代码有效,并且 - 提出了地图和点击:
var request = this.http.get("https://jsonplaceholder.typicode.com/todos/1")
.pipe(
map(x => {
console.log(map);
//this will be raised
}),
tap((x: any) => {
console.log(tap);
//this will be raised
}
));
request.subscribe((x) => alert(x));
在这段代码中:
var request = this.http.get("https://jsonplaceholder.typicode.com/todos/1");
request.pipe(
map(x => {
console.log(map);
//this will not be raised
}),
tap((x: any) => {
console.log(tap);
//this will not be raised
}
));
request.subscribe((x) => alert(x));
map 和 tap 没有升起。 为什么他们的行为不同?
如果这是预期的行为-例如,将创建请求和管道分开到不同位置的正确方法是什么-一种方法创建请求,第二种方法将其绑定到管道,第三种方法将其引发通过调用“订阅”。
谢谢!
【问题讨论】:
-
pipe 返回一个 observable。你在第二个例子中没有处理它
-
在第一个场景中,
tap和map通过管道传递给订阅的 observable。在第二个场景中,tap和map被传送到未分配回变量request的 observable。将操作符连接到 observable 会创建修改后的 observable,并且不会影响源 observable。 -
Observable.pipe() 不会修改现有的 Observable 而是创建一个新的。
标签: angular typescript rxjs pipe angular2-observables