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

稍后使用Take取消订阅,直到满足条件

訾淇
2023-03-14

我想退订一个可观察的带带直到在任何情况下,数字不等于5。如果数字是5想做某事,稍后退订,但它不起作用。

这是我的stackblitz链接:https://stackblitz.com/edit/angular-ivy-lpkzyf?file=src/app/app.component.ts

非常感谢。

共有1个答案

欧阳斌
2023-03-14

声明

我想在数字不等于5的任何情况下取消订阅一个可观察到的拍摄

不太清楚。

如果您希望在发出的值不是5时取消订阅可观察到的值,您需要使用的获取运算符,而不是的获取

试试下面的方法

const { of, Subject } = rxjs;
const { takeUntil, takeWhile } = rxjs.operators;

const unsubscribe$ = new Subject();

of(1, 2, 3, 4, 5, 6).pipe(
  takeWhile(value => value === 5),
  takeUntil(unsubscribe$)
).subscribe({
  next: (num) => {
    console.log(num);
    console.log('something');
    unsubscribe$.next();
  },
  complete: () => console.log('Stream complete')
});
 <script src="https://unpkg.com/rxjs@6.6.7/bundles/rxjs.umd.min.js"></script> 
 类似资料:
  • 所以我必须在eclipse中为我的类创建一个java项目。分配是创建一个程序,允许用户在程序中输入整数,直到输入某个整数(42)。输入整数(42)后,程序将为1。平均输入的所有数字。2、显示输入的最小值和最大值。3、输入的数字总数。这些必须在不计算(42)的情况下进行计算。这就是我目前所拥有的。我可以从用户那里获得输入,一旦他们输入42,程序就会停止并显示总数,但包括42。我不知道如何为输入添加一

  • 问题内容: 我需要让用户输入一个数字以用作范围的开始,然后输入另一个数字作为范围的结束。起始编号必须为0或更大,结束编号不能大于1000。两个数字都必须被10整除。我找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对它进行编码,以便在用户输入后进行检查以确保满足条件,如果条件没有环回,请再次输入。这是我到目前为止的代码。 问题答案: 轻松做:

  • 我需要要求用户输入一个数字作为范围的开始,然后输入另一个数字作为范围的结束。开始数必须大于等于0,结束数不能大于1000。两个数字都必须能被10整除。我已经找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对其进行编码,以便在用户输入后,它将检查以确保满足条件,如果不满足条件,则返回并再次输入。这是我目前掌握的代码。

  • 我试图改变我的想法,以功能的方式思考,最近面临着这样一种情况,我需要从列表中提取元素,直到满足一个条件,我找不到一个简单自然的方法来实现这一点。显然我还在学习。 假设我有这个清单: 提前感谢您的投入 注意:在发布这篇文章之前,我读了用谓词限制流,但是我不知道如何调整这个答案来解决我的问题。任何帮助将不胜感激。

  • 我使用SockJS和StompJS,当我在浏览器中打开我的应用程序时,有时它会在连接到websocket之前尝试订阅一些主题。我希望主题订阅等待应用程序连接到websocket。 这就是我实现此代码的原因,我将其称为: 因此,我只在连接状态为时才订阅该主题,并且只有在客户端首次成功连接时才会调用该主题。 我想稍后从主题中取消订阅,所以我需要内部订阅返回的对象,我还需要内部订阅的消息。 我所实现的很

  • 问题内容: 我想创建一个类,该类可以运行一种方法,直到满足有关返回值的条件为止。 它应该看起来像这样 我的方法轮询器看起来像这样()//在GuiSim回答之后 但是我很难从这里开始。 在满足条件之前,如何实现对通用方法的重试? 谢谢。 问题答案: 是的,这可以在Java 7中轻松完成,甚至可以使用Java 8进行更清洁的操作。 方法的参数应为,方法的参数应为。 然后,您可以使用方法引用或lambd