为了账号安全,请及时绑定邮箱和手机立即绑定

UniRx 没有 Observable.Generate() 方法

UniRx 没有 Observable.Generate() 方法

C#
holdtom 2022-08-20 16:21:24
.NET Reactive Extensions 有一个整洁的方法,可以使用 corecursion 生成序列,该方法称为 Observable.Generate。我在UniRx(Unity Reactive Extensions)中找不到该方法的等效项。你能帮我把这个代码示例移植到UniRx环境中吗?public static IObservable<long> Timer(TimeSpan dueTime){    return Observable.Generate(        0L,        i => i < 1,        i => i + 1,        i => i,        i => dueTime    );}
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

Generate是UniRX中没有的运算符。

您可以尝试使用操作员观察者库或使用 Create 运算符创建自己的生成版本。

你到底想做什么?也许我可以以某种方式帮助你。


查看完整回答
反对 回复 2022-08-20
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我试过了...这是工作。但我不知道可以吗?=D


public static IObservable<DateTime> CreateRandomTimer(int minValue, int maxValue)

{

    return Observable.CreateSafe<DateTime>(observer =>

    {

        var random = new Random();


        var timer = new Timer

        {

            Enabled = true,

            Interval = random.Next(minValue, maxValue) * 1000

        };

        

        void OnTimerElapsed(object sender, ElapsedEventArgs e)

        {

            observer.OnNext(e.SignalTime);


            var currentTimer = (Timer) sender;

            currentTimer.Stop();

            currentTimer.Interval = random.Next(minValue, maxValue) * 1000;

            currentTimer.Start();

        }


        timer.Elapsed += OnTimerElapsed;

        timer.Start();


        return Disposable.Create(() =>

        {

            timer.Elapsed -= OnTimerElapsed;

            timer.Dispose();

        });

    });

}


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信