如果要确保where.get.then之后的代码块同步执行是把后面的都写进箭头函数内吗?
(实际操作中发现wx.showToast会先于return执行,使程序没有达到预期效果)
checkin1.where({_id:phone}).get().then( res=> {
if (res.data[0][y+m+d+'P'] != '#FFFFFF') {
checkinsuccess=true;
return;
}
})
if (hour*60+minute-2<checkinhour*60+checkinminute) {
wx.showToast({
title: '签到已成功',
icon: 'success',
duration: 3000,
})
checkin1.where({_id:phone}).update({
data: {
[[y+m+d+'P']] : '#44e036' //准时
},
})
} else if (hour*60+minute-17<checkinhour*60+checkinminute) {
wx.showToast({
title: '迟到啦下次注意',
image: '/assets/images/checkin/late.png',
duration: 3000,
})
checkin1.where({_id:phone}).update({
data: {
[[y+m+d+'P']] : '#FFF200' //迟到
},
})
crecord.where({_id:phone}).update({
data: {
[[classn]] : db.command.inc(1) //迟到
},
})
} else {
wx.showToast({
title: '缺勤啦下次注意',
image: '/assets/images/checkin/absence.png',
duration: 3000,
})
checkin1.where({_id:phone}).update({
data: {
[[y+m+d+'P']] : '#ED1C24' //缺勤
},
})
crecord.where({_id:phone}).update({
data: {
[[classm]] : db.command.inc(1) //缺勤
},
})
}
checkinsuccess=true;
checkinavailable=true;
是的,如果要确保where.get.then之后的代码块同步执行,可以把后面的代码块都写进箭头函数内。
在实际操作中,wx.showToast会先于return执行,这是因为wx.showToast是一个异步操作,会先执行完后面的代码块,然后再执行wx.showToast。如果要确保wx.showToast在return之后执行,可以使用async/await来等待wx.showToast执行完毕再执行return。