微信小程序遇到的程序异步执行导致数据库读写异常的问题
重点 :如果遇到数据库读写有矛盾,或者读写得不到你想要的结果,一定是你程序的执行顺序出了问题,举个例子: 我的目的是查找出结果,向数组中增加数据,然后再写入结果
let num_list = []let name_list = []let time_list = []let state_list = []// 第一部分wx.cloud.database().collection('time-person').doc(time).get().then(res => {num_list = res.data.numname_list = res.data.nametime_list = res.data.timestate_list = res.data.statenum_list.push("10000")name_list.push("李易峰")time_list.push("07:03")state_list.push(1)// 第二部分wx.cloud.database().collection('time-person').doc(time).update({data: {num: num_list,name: name_list,time: time_list,state: state_list}}).then(res => {console.log("添加完成")})}).catch(res => {console.log("数据库读取失败");})
这一段代码和下一段代码得到的是截然不同的结果:
let num_list = []let name_list = []let time_list = []let state_list = []// 第一部分wx.cloud.database().collection('time-person').doc(time).get().then(res => {num_list = res.data.numname_list = res.data.nametime_list = res.data.timestate_list = res.data.statenum_list.push("10000")name_list.push("李易峰")time_list.push("07:03")state_list.push(1).catch(res => {console.log("数据库读取失败");})// 第二部分wx.cloud.database().collection('time-person').doc(time).update({data: {num: num_list,name: name_list,time: time_list,state: state_list}}).then(res => {console.log("添加完成")})})
后面这个代码,第二部分如果写在外面,可以想象成在执行第一部分的时候就已经开始执行第二部分了,这样数据库中永远只存在一条数据,就是刚刚这条新增数据;而第一种写法则是严格按照逻辑顺序,先读了数据,再添加,再写进入,所以才不会出错!
微信小程序遇到的程序异步执行导致数据库读写异常的问题相关推荐
- 微信小程序面试题大全
1.简述微信小程序的相关文件类型? WXML 搭建页面的结构 WXSS 页面样式文件 js 逻辑处理,网络请求 json 配置当前页面标题和引入组件等 app.js 可以在里边监听生命周期函数.声明全 ...
- 微信小程序这么火,到底会对C#开发者带来怎样的改变
在9月22日凌晨,微信公众平台开始陆续对外发出小程序的内测邀请,小程序也立即成为被外界广为关注的微信"应用号",9月23日的福州 2016腾讯全球合作伙伴大会上,腾讯COO.游戏和 ...
- 《欢乐坦克大战》微信小游戏开发总结
<欢乐坦克大战>微信小游戏开发总结 <欢乐坦克大战>微信小游戏开发总结 前言 <欢乐坦克大战>是一款支持3V3实时对战并首批参与上线的微信小游戏中的作品.因为该游戏 ...
- 剖析:谈谈微信小游戏的成功点
微信小游戏从<跳一跳>开始,很快在小程序领域占据了绝大部分的江山.现在微信上到处可见小游戏的身影. 大量开发者涌入微信小游戏,为微信生态.为微信小程序的生态增添了无数可能性.作为游戏开发者 ...
- 同时存多个变量缓存 微信小程序_微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解...
微信小程序 缓存 关于本地缓存 1.wx.setStorage(wx.setStorageSync).wx.getStorage(wx.getStorageSync).wx.clearStorage( ...
- 微信小程序正确的异步request请求,根据经纬度获取地理位置信息
微信小程序的所有request请求都是异步的,不支持同步.但是在请求时可能会耗费一定时间,这样的话在获取返回数据时可能方法还没有执行完就已经进行赋值操作了.我遇到的就是拿到的数据为undefined. ...
- 微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
微信小程序之支付后如何调用SDK的异步通知 发布时间:2021-07-05 10:47:33 来源:亿速云 阅读:57 作者:小新 这篇文章主要介绍微信小程序之支付后如何调用SDK的异步通知,文中介绍 ...
- onlaunch 异步_微信小程序之onLaunch与onload异步问题
所述问题: 前端时间开发了一个微信小程序商城项目,因为这个项目我们的需求是进入小程序就通过wx.login({}) 这个api进行用户登录,获取系统后台的用户基本信息.再此之前,一直以为微信小程序中的 ...
- async await 处理异步变同步(微信小程序内举例)
1.async起什么作用? 输出的是一个Promise对象 注: 1)async函数返回的是一个Promise对象.Async函数(包含函数语句.函数表达式.Lambda表达式)会返回一个Prom ...
最新文章
- 我的第一个SharePoint2013 App
- 母婴品牌与AI的碰撞:第四范式为美素佳儿提供智能推送服务
- 多选框向后台传值,多选框的回显,对多选框的各种操作
- js运算符+运算方式
- java存钱_用Java编写银行存钱取钱
- Android 系统(90)---JIT 编译器
- Python学习笔记三(文件操作、函数)
- 网站发布在中文操作系统,但ReportViewer的工具栏显示为英文的解决方法
- Linux设置时间和硬件时间
- secoclient-linux-64 安装与卸载
- 将Table数据记录生成表格图片
- 方法重载时,需要遵循以下三条原则
- 导数和积分的转换关系
- GNU C++ 智能指针4-- 解析_Sp_counted_ptr类
- 【python】将字符串转换为十进制ASCII码
- TCP/IP协议详解(TCP/IP protocol)
- asp html表单没有csrf保护,ASP.NET MVC 和网页中的 XSRF/CSRF 防护
- 群联PS3109固态硬盘掉固件识别为20M问题原因及解决方法
- Mybatis异常错误:Mapper method attempted to return null from a method with a primitive return type (int)
- matlab cg steihaug,信赖域(一):Cauchy Point与Dogleg