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

创建一次性订阅

程吕恭
2023-03-14

我需要创建对可观察的订阅,该订阅在第一次调用时立即被处理掉。

有没有像这样的东西:

observable.subscribeOnce(func);

我的用例是,我正在一个快速路由处理程序中创建一个订阅,每个请求都会多次调用该订阅。

共有3个答案

程招
2023-03-14

更新(2021 12月):

由于toPromise()函数在RxJS 7中已被弃用,因此已宣布使用新函数代替它。第一个值从最后一个值从

firsValueFrom函数解析第一个发出的值并直接取消订阅资源。当Observable完成而不发出任何值时,它会以EmptyError拒绝。

另一方面,lastValuefrom函数在一定程度上与toPromise()相同,因为它解析了可观察对象完成时发出的最后一个值。但是,如果可观察对象没有发出任何值,它将拒绝并返回一个空错误。不像toPromise()在没有值发出时解析未定义

有关更多信息,请查看文档。

老回答:

如果您只想调用一次可观察对象,这意味着您不会等待来自它的流。因此,在您的情况下,使用 toPromise() 而不是 subscribe() 就足够了,因为 toPromise() 不需要取消订阅。

司空宗清
2023-03-14

RxJS有一些我见过的最好的留档。按照下面的链接,您将看到一个非常有用的将用例映射到运算符的表。例如,在“我想取第一个值”用例下有三个运算符:第一个第一个Or默认示例

请注意,如果一个可观察序列在没有通知的情况下完成,那么< code>first操作符会通知订户一个错误,而< code>firstOrDefault操作符会向订户提供一个默认值。

操作员用例查找

夏星阑
2023-03-14

不是100%确定您需要什么,但如果您只想观察第一个值,请使用first()take(1)

observable.first().subscribe(func);

注意:.采取(1). First()都在满足条件时自动取消订阅

来自编码器的评论。

import { first } from 'rxjs/operators'
    
observable
  .pipe(first())
  .subscribe(func);

这就是原因

 类似资料:
  • 我在代理“客户”群体中用Anylogic创建了一个时间表,客户必须创建订单并将其发送到“终端”。每天,每个客户必须发送到终端的订单量都是不同的。我想一次创建多个订单(每天,即计划中的开始列),我想创建的金额是计划中的值列。如何做到这一点? 正如您在下面看到的,现在每天只创建一个订单(以金额为参数),但我想在那一天/那一刻创建这个订单量。谢谢您的帮助! 日程数据如下所示:

  • 说明 支付宝境外到店支付-预创建订单 官方文档:https://global.alipay.com/service/transaction_QR_Code/13 类 请求参数类 请求参数 类名:\Yurun\PaySDK\AlipayCrossBorder\InStore\PreCreate\Request 属性 名称 类型 说明 $service string 接口名称 $notify_url

  • 创建一个条纹客户非常容易,将一张卡与该客户关联起来,然后随时向他们收费。然而,使用Laravel出纳之后,在任何时候订阅用户的计划都不那么容易。 当用户在“我的设置”中添加卡时,会生成卡令牌。我已尝试在此时存储令牌,并在用户希望更新其订阅时使用它,但出现错误:

  • 问题内容: 我需要一次创建多个表。我很难找出正确的方法来完成此任务。目前,我的脚本如下所示: 显然,这是行不通的,并且不会创建任何表。有一种简单的方法可以一次创建多个表吗? 问题答案: MySQL变得令人困惑,因为您没有划定查询范围。在第一条语句后添加分号: 另外,根据Heredoc文档,请确保位于行的开头, 没有其他字符,除了分号外 。 鉴于上述方法似乎无效,请尝试以下代码: 您 可以 使用(M

  • 我需要对我的商店进行一些定制,但我不知道如何使用WC_Order类在PHP中创建WooCommerce订单。我怎样才能做到这一点? 这是我尝试过的代码:

  • 我想使用Laravel/plan Facade创建一次性付款计划。我可以创建月度、年度计划,但我不知道如何实现一次性付款计划,因为我们可以在stripe dashboard上创建产品时创建一次性付款计划。下面是我创建每月、每年、每周或每天但不是终身/一次性付款的代码。