评论

小程序里可以使用async await语法吗

小程序里可以使用async await语法吗

这几天在云开发开发小程序的过程中遇到一个很棘手的逻辑问题,

需求是这样的:

在线考试小程序场景,每个科目会把题库(按100个题算)分成10天来完成

(比如day1是[01,02,03,04,05,06,07,08,09,10]这10个题),

每天只能做一个Day的试题,现在问题是:当我们来到小程序需要答题的时候,是从哪一个Day开始做?

数据库有以下两个集合

1、days,用于维护每个day跟试题id的信息,

[

{day1,[01,02,03,04,05,06,07,08,09,10]},

{day2,[11,12,13,14,15,16,17,18,19,20]}

]

2、historys,用于维护用户答题的历史,比如

[

{openid,day1},

{openid,day2}

]

实现的方式有很多种:

1、promise.all

2、async await

本文采用async await方式,那么在小程序中可以使用这种语法吗?经过了解,目前不需要引入其他库是可以正常使用的,但是需要设置一下。

小程序代码中如果用上述语法,在本地设置里面必须选中下图的增强编译,其实这里也是默认选中的

占位符

占位符

那么在进考试的时候就要确定是做哪一天的?具体逻辑如下

1、取这个科目所有的day信息,这里面每条记录包含了当天的题目编号列表,比如[day1,day2,day3,day4,day5,day6,day7,day8,day9,day10]

2、取当前微信用户已经做过的day信息,比如这个用户已经做完了[day1,day2]

3、取上面两个集合的差集[day3,day4,day5,day6,day7,day8,day9,day10],取差集中的第一项也就是day3作为当前答题的试卷

这个逻辑可以用promise.all,但是我在实现的时候选择了async,具体代码如下


占位符

占位符

当求得这两个数组之后,我们取数组的差集,就找出所有未做的day,从中任取一天便可以完成上述需求。

通过该文,我们学习了以下知识点

1、async await在小程序中是否可用

2、如何实现两个数组的差集

3、小程序云开发,数据查询具体如何使用async await

本文完

最后一次编辑于  02-22  
点赞 2
收藏
评论

1 个评论

  • Admin²⁰²⁰
    Admin²⁰²⁰
    02-22

    666,你啥时候5级了啊,这个怎么升级得快啊?

    02-22
    赞同
    回复 4
    • 鹤仙姑
      鹤仙姑
      02-22
      哈哈哈哈,春节之前已经成功晋级L5,今年目标L6,目前感觉自然增长的话,下一个2021年春节之前晋级L6不是问题
      02-22
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      02-22回复鹤仙姑
      你是这么做到的,按目前的方式我感觉晋级L4都很难。
      02-22
      回复
    • 鹤仙姑
      鹤仙姑
      02-22回复Admin²⁰²⁰
      具体不是很清楚,我观测到,我在社区哪怕没有输出,每天仍有20个贡献值,300天就是6000个妥妥的L6
      02-22
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      02-22回复鹤仙姑
      666啊,没输出哪里来的贡献值啊。我每天就几个贡献值
      02-22
      回复
登录 后发表内容