小程序里可以使用async await语法吗
发布于 5 年前 作者 along 2712 次浏览 来自 分享

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

需求是这样的:

在线考试小程序场景,每个科目会把题库(按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

本文完

1 回复

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

回到顶部