前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟我学Rx编程——Concat

跟我学Rx编程——Concat

作者头像
我不是码神
发布2022-07-28 14:32:42
2440
发布2022-07-28 14:32:42
举报
文章被收录于专栏:流媒体技术流媒体技术

业务逻辑

  1. 游戏场景进入后,根据具体业务场景和活动进程,可能需要弹出若干的弹框,比如邀请好友获得的奖励、离线收益、瓜分大奖等等。
  2. 这些弹框必须逐个弹出,不能同时弹出。

常规实现

由于弹框的逻辑是异步返回,所以免不了使用回调机制

伪代码

代码语言:javascript
复制
OpenDialog1(result1=>{
  OpenDialog2(result2=>{
     ……
  })
})

当然实际代码会比这个更复杂,需要更多的判断和分叉

使用Rx实现

伪代码

代码语言:javascript
复制
let dialogs = []
dialogs.push(rx.fromDialogBox(……))
dialogs.push(rx.fromDialogBox(……))
……
rx.concat(...dialogs).subscribe(……)

其中fromDialogBox是自己扩展的一个事件流(Observable)

这么做的好处有几个:

  1. 去除了回调,可读性提升
  2. 可以随意改变弹框的顺序
  3. 可以随意的根据需求变化而去除某个弹框逻辑
  4. 在这个事件流数组中,可以添加其他事件流,即其他异步操作穿插在弹框序列中
  5. 可以动态判断已经弹出的弹框数量来决定下一步操作(实时判断dialogs.length)
代码语言:javascript
复制
let dialogs = []
if (condition1)
dialogs.push(rx.fromDialogBox(……))
if (condition2)
dialogs.push(rx.fromDialogBox(……))
……
if (dialogs.length<2)
dialogs.push(rx.fromDialogBox(……))
rx.concat(...dialogs).subscribe(……)

在上述情况下,假如使用传统方式编程,可读性会很差,也更容易出现bug,你细品

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档