当前位置: 首页 > 知识库问答 >
问题:

返回一个空的可观察

徐嘉勋
2023-03-14

函数more()应该从get请求返回一个可观察的

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未定义时出错,我如何返回空的可观测值?

this.collection.more().subscribe(
  (res) => {
    console.log(res);
  }, (err) => {
    console.log(err);
  }
);

在RXJS 6中

import { EMPTY } from 'rxjs'
return EMPTY; 

共有3个答案

拓拔意
2023-03-14

现在有一个EMPTY常量和一个EMPTY函数。

  import { Observable, empty, EMPTY, of } from 'rxjs';

  //This is now deprecated
  var delay = empty().pipe(delay(1000));     
  var delay2 = EMPTY.pipe(delay(1000));

Observable.empty()不存在了。

酆英达
2023-03-14
匿名用户

使用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,只会完成。因此,如果您有,例如,点击,他们可能不会得到您想要的触发器(参见下面的示例)。

而({})的创建一个可观察的,并发出下一个值为{},然后完成可观察的

例如。:

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

祁嘉木
2023-03-14

对于typescript,您可以指定空可观察对象的通用参数,如下所示:

import 'rxjs/add/observable/empty' 

Observable.empty<Response>();
 类似资料:
  • 我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块

  • 在一个服务中,我有两个API调用,每个调用都返回一个可观察的,在我的组件中,我有一些条件,如果为true,我必须调用这两个函数,但我需要等待get()调用,这样我就可以使用get调用返回的参数执行post函数。如果为false,我只想用已经定义的参数调用post函数。 服务: 组成部分: 我不想重复帖子调用的代码,或者如果不可能的话,只是不要在另一个订阅()中使用订阅()。我怎么能这么做?没有异步

  • 问题内容: 我有一个文件夹,其中包含index.js和几个模型(类)index.js book.js author.js 问题在于Author类似乎找不到书!它只是一个空对象。但是,如果我在index.js中切换导出,则将Book放在Author之后- 可以,但是其他模型将停止工作。 我不想做任何骇客工作。 问题答案: 这是因为您具有循环依赖关系。Node.js以非常特定的方式处理此问题: 第一个

  • 我是JPCAP的新手。我在用 eth0链路Encap:Ethernet HWaddr 18:A9:05:CB:8D:FB 上行广播多播MTU:1500度量:1个RX数据包:0个错误:0个丢弃:0个溢出:0帧:0个TX数据包:0个错误:0个丢弃:0个溢出:0载波:0个冲突:0个TX队列n:1000个RX字节:0(0.0B)TX字节:0(0.0B)中断:17 lo链接Encap:本地环回 inet A

  • 有人能向我解释一下为什么运算符可以接受返回或的函数吗? 官方文件说: FlatMap运算符通过将您指定的函数应用于源可观察对象发出的每个项目来转换可观察对象,其中该函数返回本身发出项目的可观察对象。 为什么它也可以返回数组? 例如,它们都是有效的: 但这不起作用: