11.UniRx序列(Concat、Defer、Empty、FromAsyncPattern、Throw、RefCount、Publish、Pairwise)

本文详细介绍了UniRx库中的一系列序列操作符,包括Concat用于连接多个流,Defer延迟创建Observable,Empty创建仅发射Complete事件的流,FromAsyncPattern将非Observable对象转换为Observable,Throw创建抛出错误的流,RefCount和Publish配合使用实现连接和发布,以及PairWise用于处理成对的数据。通过示例代码和执行结果解析,帮助读者深入理解这些操作符的工作原理和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Concat
Defer
Empty
FromAsyncPattern
Throw
RefCount
Publish
Pairwise

Concat

连接多个流,按照一定的先后顺序将多个流串联到一起,流包装的数据类型必须一致,图解
在这里插入图片描述
执行结果
在这里插入图片描述
代码示例

public class No10_Mixed1 : MonoBehaviour
{
   
    void Start()
    {
   
        var take = Observable.EveryUpdate().Take(3);
        var @return = Observable.Return<long>(100);

        var concat = Observable.Concat(take, @return);
        concat.Subscribe(Next, Error, Complete);
    }

    void Next(long value)
    {
   
        Debug.LogFormat("Concat之后流的数据是:{0}", value);
    }

    void Error(Exception ex)
    {
   
        Debug.LogException(ex);
    }

    void Complete()
    {
   
        Debug.LogFormat("Complete");
    }
}

代码解析

之前的命名规范都有添加Stream,这个没有添加到命名里面去的;因为我们写的不是Framework,不需要全程来命名的,我建议如果你对一个知识点不熟悉的话,那么你命名的时候最好写全一些,这样你自己阅读起来方便;一个知识点熟悉了以后,可以以最简短的命名来给变量命名,@return是为了和编程字段区分开来,@在C#里面是一个合格字符,可以用来命名。


Defer

在没有订阅者订阅之前,不会创建Observable,每次有订阅者来订阅的时候,Defer会创建一个新的Observable,图解
在这里插入图片描述
执行结果
在这里插入图片描述
代码示例

public class No10_Mixed1 : MonoBehaviour
{
   
    void Start()
    {
   
        var defer = Observable.Defer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值