消防安全知识答题活动小程序v4.3.0
v4.3.0
1)实现答题倒计时功能
如果让你给一款答题小程序产品制定一个技术方案,比如实现答题倒计时功能,你会怎么做。
通常,我们对于倒计时的普遍认知是设置一个定时器去实现的,在定时到期以后执行注册的回调函数。基于这个认识,我们看看具体是怎么实现的,或是实现方案有哪些。
①setTimeout
有的同学可能会选择使用setTimeout,看看他是怎么实现的。首先是定义一个countDown函数,里面主要是一个执行setTimeout的函数体,在setTimeout里执行countDown。页面加载时,调用一次countDown,然后每一秒调用一次countDown。
Page({ /*** 页面的初始数据*/data: {count: 50},/*** 生命周期函数--监听页面加载*/onLoad() {// 函数执行this.countDown();},//倒计时函数的定义countDown() {const that = this;const { count } = that.data;//定时器const time = setTimeout(function () {that.setData({count: count - 1,});// 函数执行that.countDown();}, 1000);},})
确实是可以实现答题倒计时功能,但是这种技术方案存在着比较大的缺陷或者性能问题。当然,每一种技术方案都存在其优缺点,没有完美一说。但是,我们就是要在具体问题具体分析,找到对应当前应用场景或者当前业务需求的最优解。
②setInterval
提供多一种思路,多一种选择和可能性。我们看看另一种解决方案,setInterval。通过setInterval设定一个定时器,按照指定的周期(以毫秒计)来执行注册的回调函数。
Page({/*** 页面的初始数据*/data: {secondsNum: 600},/*** 生命周期函数--监听页面加载*/onLoad() {// 函数执行this.countDown();},//倒计时函数的定义countDown() {let secondsNum = this.data.secondsNum;//定时器let timer = setInterval(() => {secondsNum--;this.setData({secondsNum});}, 1000);},
})
2)实现限时作答功能
实现限时作答功能,其实就是当倒计时结束之后,程序需要做什么操作,比如做一些提示、限制不能继续作答了或者是系统强制交卷等。
①首先,如何判断倒计时结束呢?
通过判断secondsNum是否为0,是则倒计时结束,否则还没结束。
if (this.data.secondsNum == 0) {// 弱提示wx.showToast({title: '答题时间到!\n已为您自动提交答卷!',icon: 'none',duration:3000,mask:true})}
②系统强制交卷
if (this.data.secondsNum == 0) {wx.showToast({title: '答题时间到!\n已为您自动提交答卷!',icon: 'none',duration:3000,mask:true});//系统自动提交this.addExamRecord();// 取消由 setInterval 设置的定时器clearInterval(timer);}
当然,这种方式也是存在一定的的缺陷或者性能问题。但是相对比前一种,不失为一种优化方向。后续,我也会在此基础上,再给出进一步优化的完整的解决方案。大家也可以先思考一下,可以相互交流交流。
v4.2.0
1)支持选项乱序
v4.1.0
1)支持多选题
2)支持填空题
v3.0.0
1)升级功能:
- 答题页、结果页界面,增加展示微信头像和昵称栏目√
- 由仅支持单选,升级为支持单选、判断、多选题型 √
- 排行榜页排名机制,优化为取个人最佳成绩进行排名√
- 各界面及功能一些小优化√
2)拓展功能:
- 注册登录页 √
- 错题集 √
- 题库学习 √
- 查看用户的答题成绩以及答题情况-管理员 √
- 查看所有用户的答题记录-管理员 √
- 后台题库管理系统-管理员 √
- 题目增删查改-管理员 √
3)基于v2.0拓展升级:
- 排行榜页
- 活动规则页
- 答题记录页
- 首页、答题页、结果页
- 微信授权登录
- 获取微信头像和昵称等
- 实现页面间跳转功能
- 实现转发分享答题成绩功能
- 题库随机抽题
- 查询历史成绩
- 实现用云开发实现查询题库功能
- 实现动态题目数据绑定
- 答题交互逻辑
- 切换下一题
- 系统自动判分
- 提交答卷保存到云数据库集合
- 答题结果页从云数据库查询答题成绩
- 题库学习
- 注册登录页
- 支持单选、判断题型
- 错题集
- 查看用户的答题成绩以及答题情况-管理员
- 查看所有用户的答题记录-管理员
- 后台管理-管理员
- 后台数据监控-管理员
v2.0.0
- 活动规则页
- 排行榜页
- 答题记录页
- 题库随机抽题
- 微信授权登录
- 获取微信头像和昵称等
- 首页、答题页、结果页
- 实现页面间跳转功能
- 实现转发分享答题成绩功能
- 实现用云开发实现查询题库功能
- 实现动态题目数据绑定
- 答题交互逻辑
- 切换下一题
- 系统自动判分
- 提交答卷保存到云数据库集合
- 查询历史成绩
- 答题结果页从云数据库查询答题成绩