当前位置:网站首页>uinty lua 关于异步函数的终极思想
uinty lua 关于异步函数的终极思想
2022-08-04 23:59:00 【接啊是哦ida】
相信很多人都被回调地狱折磨过 ,
比如我们想写一段逻辑,播放A动画 A动画完毕之后 进行B动画 B动画完毕之后进行C动画
这时候 一般我们的逻辑是这样的
function Play()
playA()
end
function PlayA()
--do 动画结束之后播放B
end
function PlayB()
--do 动画结束之后播放C
end
function PlayC()
--end
end
当代码流程比较短的时候 感觉还可以 但是 比较长的时候
- 读起来很困难 需要一步跳 才知道 他接下来想干什么
- 当要改顺序的时候 就很麻烦 需要将衔接的回调修改
–那么 以一种正常的思维应该是什么样的
我们其实是想这样的书写
这样写的好处就是 我们可以随意调换它们的顺序
阅读起来比较容易 看一个函数 就可以知道它最 终要做哪些事情
function Play()
playA()
PlayB() --等待A播放完播放B
PlayC() --等待B播放完播放C
end
function PlayA()
--do 动画结束 已结束 可以进行下一步
end
function PlayB()
--do 动画结束 已结束 可以进行下一步
end
function PlayC()
--end
end
可是lua中都是同步的 ,怎么实现可以等待一个函数结束之后 在进行下一个函数呢
lua中的协同函数 完美的解决了这个问题
我们可以这样
-- 将 Play 当成一些lua协同启动函数
function Play()
playA()
PlayB() --等待A播放完播放B
PlayC() --等待B播放完播放C
end
function PlayA()
--do 在动画结束事件中唤醒携程
--do 挂起携程
end
function PlayB()
--do 在动画结束事件中唤醒携程
--do 挂起携程
end
function PlayC()
--end
end
最后 lua异步详细的代码程序 可以看看这篇文章
边栏推荐
- 怎样进行在不改变主线程执行的时候,进行日志的记录
- jenkins发送邮件系统配置
- uniapp动态实现滑动导航效果demo(整理)
- 子连接中的参数传递
- Uniapp dynamic sliding navigation effect demo (finishing)
- Essential knowledge for entry-level 3D game modelers
- leetcode经典例题——单词拆分
- 找不到DiscoveryClient类型的Bean
- 性能测试如何准备测试数据
- KT148A voice chip ic working principle and internal architecture description of the chip
猜你喜欢
Statistical words (DAY 101) Huazhong University of Science and Technology postgraduate examination questions
jenkins send mail system configuration
入门3D游戏建模师知识必备
2022 Niu Ke Summer Multi-School Training Camp 5 (BCDFGHK)
Huggingface入门篇 II (QA)
VMware NSX 4.0 -- 网络安全虚拟化平台
论文解读( AF-GCL)《Augmentation-Free Graph Contrastive Learning with Performance Guarantee》
在线中文姓名生成工具推荐
Literature reading ten - Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
如何写好测试用例
随机推荐
The applicable scenarios and common product types of the KT148A electronic voice chip ic solution
大师教你3D实时角色制作流程,游戏建模流程分享
【无标题】线程三连鞭之“线程池”
关于使用read table 语句
After another 3 days, I have sorted out 90 NumPy examples, and I can't help but bookmark it!
KT148A电子语音芯片ic方案适用的场景以及常见产品类型
矩阵数学原理
MongoDB permission verification is turned on and mongoose database configuration
美团二面:Redis与MySQL双写一致性如何保证?
《MySQL入门很轻松》第2章:MySQL管理工具介绍
2022牛客暑期多校训练营5(BCDFGHK)
[LeetCode] Summary of Matrix Simulation Related Topics
Cython
【手撕AHB-APB Bridge】~ AMBA总线 之 AHB
游戏3D建模入门,有哪些建模软件可以选择?
【SSR服务端渲染+CSR客户端渲染+post请求+get请求+总结】
小黑leetcode之旅:95. 至少有 K 个重复字符的最长子串
找不到DiscoveryClient类型的Bean
10 种常见的BUG分类
Brainstorm: Complete Backpack