rxjs 管道:可观察类型的参数不可分配给参数



我是 rxjs 和管道的新手 - 并且拔掉我的头发试图理解为什么我会收到这个打字稿错误:"可观察类型的参数不可分配给参数 OperatorFunction"。有人可以向我解释一下吗?

目的是请求"Hello",但在数据通过管道传输时将数据替换为"Bye"。

ngOnInit() {
this.getHello()
.pipe(this.getBye())
.subscribe(data => console.log(data))
}
getHello() {
return of("Hello")
}
getBye() {
return of ("Bye")
}
}

使用 map 作为管道运算符:

this.getHello()
.pipe(map((data) => { return this.getBye() }))
.subscribe(data => {
console.log(data);
});
getHello() {
return of("Hello");
}
getBye() {
return of("Bye");
}

详细检查管道操作器的链接: https://angular.io/guide/rx-library https://blog.hackages.io/rxjs-5-5-piping-all-the-things-9d469d1b3f44

管道方法接收一个 OperatorFunction,但你给它一个返回 Observable 的 getBye(( 方法。你必须传递一个 OperatorFunction,例如"map":

ngOnInit() {
this.getHello()
.pipe(map(_ => this.getBye()))
.subscribe(data => console.log(data));
}
getHello(): Observable<string> {
return of('Hello');
}
getBye(): string {
return 'Bye';
}

当你创建自己的运算符时,你必须将一个函数包装在一个函数中。在流上设置新事件时调用内部函数。同时,您可以访问流本身(sourceStream(。

有关工作示例,请参阅堆栈闪电战。

ngOnInit() {
this.getHello()
.pipe(this.getBye())
.subscribe(data => console.log(data))
}
getHello() {
return of("Hello")
}
getBye() {
return (sourceSteam: any) => of("Bye")
}
}

https://stackblitz.com/edit/ng-stackoverflow-52413693?file=index.ts

相关内容

  • 没有找到相关文章

最新更新