gpt4 book ai didi

javascript - 返回一个空的 Observable

转载 作者:IT王子 更新时间:2023-10-29 02:38:10 29 4
gpt4 key购买 nike

函数 more() 应该从 get 请求返回一个 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,它们可能不会如您所愿地触发(参见下面的示例)。

of({}) 创建一个 Observable 并发出值为 {} 的 next,然后它完成 可观察

例如:

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();

关于javascript - 返回一个空的 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com