今天学习《前端篇》第5章 平台功能优化 第16课 添加超时限制,这节课我们尝试给游戏加一个时间限制,例如 30秒
学习目标
- 限制游戏 30 秒结束
- 拓展:学习使用定时器
- 让游戏支持重启
- 学会及时清除定时器
主要知识点/技能点
- setImmediate定时器,这个定时器相当于一个延时为0的setTimeout
- 在一个设定的时间间隔之后执行代码的这件事情被称为定时器事件。
- setTimeout和setInterval都会返回一个定时器编号,它们在一个线程内共用一个编号池,且都是从小到大递增的。
- clearTimeout与clearInterval是用于清除定时器的,既然两类定时器的编号池是共享的,那么这两个清除定时器的方法也是可以共用的。也就是说,clearTimeout可以清除setInterval设定的定时器,同理clearInterval也可以清除setTimeout设定的定时器。
- 定时器中的回调函数是从异步线程推向主线程的,排队,在主线程有资源执行这个回调函数的时候,执行。
- JS在宿主环境中基本是一门单线程语言,这是因为它是一门处理用户交互的脚本语言,因为用户是“单线程”的,所以处理脚本也必须是单线程的。
- 在实际编程中,定时器的回调函数、事件的回调句柄函数、requestAnimationFrame的回调函数等,凡是涉及异步线程的地方,只要在函数内部使用了this,那这些this在大多数情况下都面临着找不着“家”的情况。
- Worker线程和主线程各使用一个自己的定时器编号池,主线程不能清除Worker线程中的定时器,反之Worker线程也不能清除主线程内的定时器。
实践疑难点
略
小结
这节课我们主要给游戏添加了超时限制,并在实践过程中学习了如何使用JS的定时器。