VenusYan 2023-05-09 14:30 采纳率: 100%
浏览 28
已结题

小程序已有then同步执行

如果要确保where.get.then之后的代码块同步执行是把后面的都写进箭头函数内吗?
(实际操作中发现wx.showToast会先于return执行,使程序没有达到预期效果)

img

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;

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2023-05-09 14:36
    关注

    是的,如果要确保where.get.then之后的代码块同步执行,可以把后面的代码块都写进箭头函数内。
    在实际操作中,wx.showToast会先于return执行,这是因为wx.showToast是一个异步操作,会先执行完后面的代码块,然后再执行wx.showToast。如果要确保wx.showToast在return之后执行,可以使用async/await来等待wx.showToast执行完毕再执行return。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 5月9日

悬赏问题

  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊