功能more()
应该返回一个Observable
来自获取请求
export class Collection {
public more = (): Observable<Response> => {
if (this.hasMore()) {
return this.fetch();
} else {
// return empty observable
}
};
private fetch = (): Observable<Response> => {
return this.http.get("some-url").map((res) => {
return res.json();
});
};
}
在这种情况下,我只能在以下情况下提出请求:hasMore()
是真的,否则我会收到错误subscribe()
功能subscribe is not defined
,如何返回一个空的 Observable?
this.collection.more().subscribe(
(res) => {
console.log(res);
}, (err) => {
console.log(err);
}
);
使用 RxJS 5.5+ 的新语法,如下所示:
// RxJS 6
import { EMPTY, empty, of } from "rxjs";
// rxjs 5.5+ (<6)
import { empty } from "rxjs/observable/empty";
import { of } from "rxjs/observable/of";
empty(); // deprecated use EMPTY
EMPTY;
of({});
只需记住一件事,EMPTY
完成了可观察的,所以它不会触发next
在您的流中,但仅完成。因此,如果你有,例如,tap
,它们可能不会如您所愿地触发(请参见下面的示例)。
Whereas of({})
创建一个Observable
并发出下一个值为{}
然后它完成了Observable
.
E.g.:
EMPTY.pipe(
tap(() => console.warn("i will not reach here, as i am complete"))
).subscribe();
of({}).pipe(
tap(() => console.warn("i will reach here and complete"))
).subscribe();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)