问题描述:从函数中获取id_max, id_today两个数据,之后判断:如果id_max > id_today,那么total+=1;否则total不加分。
但是云函数还没有获取到这两个值呢,就已经判断过了:id_max>id_today
代码如下:
clickTap(event) { //调用云函数--获取该id对应的max_value let id_max = 0; wx.cloud.callFunction({ name: 'getLimit' , data: { id: id } }).then(res => { //res is returned from cloud console.log( 'getLimit-调用成功 and res is:' , res); const result = res.result; const data = result.data || {}; //data为空 id_max = data.data[0].data.max_value; console.log( "id_max" , id_max); if (result.code) { //code 非0, 表明出现错误 console.log( 'getLimit-something wrong' ); wx.showToast({ title: result.msg, icon: 'none' }); return ; } // wx.hideLoading(); }). catch (err => { //调用云函数失败 console.log( 'getLimit-调用失败' , err); this .setData({ statusMsg: 'getLimit-调用失败: ${err.errMsg}' }); // wx.hideLoading(); }); //调用云函数,获取该id今日点击次数 let today = new Date().setHours(0, 0, 0, 0); console.log( "today: " , today); let id_today = 0; wx.cloud.callFunction({ name: 'getToday' , data: { id: id, stuId: app.globalData.stuId } }).then(res => { //res is returned from cloud console.log( 'getToday-调用成功 and res is:' , res); const result = res.result; // const data = result.data || {}; //data为空 id_today = result.data.total; console.log( "id_today: " , id_today); if (result.code) { //code 非0, 表明出现错误 console.log( 'getToday-something wrong' ); wx.showToast({ title: result.msg, icon: 'none' }); return ; } //判断是否添加score if (id_max > id_today) { console.log( "增加分数score" ); wx.cloud.callFunction({ name: 'addScore' , data: { stuId: app.globalData.stuId } }).then(res => { //res is returned from cloud console.log( 'addscore-调用成功 and res is:' , res); const result = res.result; const data = result.data || {}; //data为空 app.globalData.score += 1; that.setData({ grade: app.globalData.score }); if (result.code) { //code 非0, 表明出现错误 console.log( 'addscore-something wrong' ); wx.showToast({ title: result.msg, icon: 'none' }); return ; } // wx.hideLoading(); }). catch (err => { //调用云函数失败 console.log( 'addscore-调用失败' , err); this .setData({ statusMsg: 'addscore-调用失败: ${err.errMsg}' }); // wx.hideLoading(); }); } else { console.log( "已超限,不加分" ); } // wx.hideLoading(); }). catch (err => { //调用云函数失败 console.log( 'getToday-调用失败' , err); this .setData({ statusMsg: 'getToday-调用失败: ${err.errMsg}' }); // wx.hideLoading(); }); } |
代码定位:
其中id_max和id_today都是云函数从数据库中获取的对应的id的值。
获取id_max的代码如下:
获取id_today的代码如下:
问题重述:就是在调用云函数获取数据库里面的id_max和id_today的时候,这俩值还没返回,就已经执行了后面(能用到这俩值)的代码。
请问怎么解决?
非常感谢!!!
两个获取的异步请求全部都完成后在执行比较 而不是任何一个完成后执行比较