消防安全知识答题活动小程序v4.3.0

news/2024/10/17 23:22:07/

消防安全知识答题活动小程序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

  • 活动规则页
  • 排行榜页
  • 答题记录页
  • 题库随机抽题
  • 微信授权登录
  • 获取微信头像和昵称等
  • 首页、答题页、结果页
  • 实现页面间跳转功能
  • 实现转发分享答题成绩功能
  • 实现用云开发实现查询题库功能
  • 实现动态题目数据绑定
  • 答题交互逻辑
  • 切换下一题
  • 系统自动判分
  • 提交答卷保存到云数据库集合
  • 查询历史成绩
  • 答题结果页从云数据库查询答题成绩

http://www.ppmy.cn/news/107294.html

相关文章

企业电子招标采购系统源码之传统采购模式面临的挑战

采购类型多 采购制度:采购金额、部门、品类的差异导致管理标准不同。 采购流程:从供应商管理、寻源操作到合同签订、订单执行,业务流程长,审批节点多,传统管理透明度低,联动性差。 供应商管理难 寻源&#…

提高亚马逊自然位排序的12个建议

尽管DTC独立站业务持续增长,但到目前为止亚马逊仍然是全球最大的电商市场。在日益激烈的竞争下,在亚马逊上拥有一个好的产品排序是非常重要的。 在Content2Sell,我们为各种不同规模的公司设计制作了超过100个亚马逊Listings,在这…

什么是千兆光模块和万兆光模块?它们有什么区别?

众所周知千兆光模块和万兆光模块的主区别在于它们的传输速率不一样,那你还知道千兆光模块和万兆光模块的其他区别吗?接下来海翎光电的小编将对千兆光模块和万兆光模块的区别进行详细解析。 什么是千兆光模块? 千兆光模块即传输速率为1000Mbps…

【Linux】Linux 文件系统与设备文件

Ref: 《Linux设备驱动开发详解:基于最新的Linux4.0内核》中的第5章《Linux 文件系统与设备文件》 基于Linux 5.10 本文结合源码和实例分析了Linux 文件系统与设备文件,主要介绍文件系统的构成和发展,以及三种虚拟文件系统debugfs procfs sysf…

Go GPM 调度器介绍

Go GPM 调度器介绍 1 简介 ​ 这几天在学习Go的GPM机制,于是就整理了一下收集的资料分享给大家,文章末尾有原文链接。主要介绍了Go在运行时调度器的基本实现逻辑和演变过程。 ​ 2 什么是Go调度器 ​ Go调度器很轻量也很简单,足以撑起gorout…

清凉一夏小风扇-React版

这里写目录标题 前言 一、效果二、代码分享三、总结 前言 本片文章主要是做一个小练习,通过react来制作一个风扇练习css动画。 vue3实现部分看这里–> 一、效果 二、代码分享 1、主体框架 “react”: “^18.2.0” “sass”: “^1.62.1” 2、主要技术点 使用事…

< 免费体验ChatGPT:免费且好用,不用使用 “ 魔法 ”,一款功能强大且轻便的插件!webTab! >

免费且好用,不用使用 “ 魔法 ”,一款功能强大且轻便的插件!webTab! 👉 前言👉 功能演示图👉 使用经验分享👉 如何安装webTab插件呢?往期内容 💨 tips&#x…

Android bitmap保姆级教学

1. 认识Bitmap Bitmap是一个final类,因此不能被继承。Bitmap只有一个构造方法,且该构造方法是没有任何访问权限修饰符修饰,也就是说该构造方法是friendly,但是谷歌称Bitmap的构造方法是private(私有的)&am…