如何根据云数据库的查询结果修改本地js函数的变量?

您所在的位置:网站首页 js设置视频暂停 如何根据云数据库的查询结果修改本地js函数的变量?

如何根据云数据库的查询结果修改本地js函数的变量?

2023-04-05 13:11| 来源: 网络整理| 查看: 265

这是我在一个页面对应的js文件里写的一个函数,预期实现的效果是:

用户在页面点击按钮,执行绑定的initClassNum()。这个函数的逻辑是先调用creatClassNum()生成随机数,再通过查询判断该随机数有没有和云数据库里的重合,重合了的话就再调用creatClassNum(),并再进行判断,直到生成的随机数与云数据库中的不重合为止。最后把该num赋值给页面里的classNumber。

  initClassNum: function(){

    var num = '';

    var result_length = -1;   // 查询结果的数组长度,为0表示班级码可以使用,大于0表示重复了

    let that = this;

    do{

      // 生成班级码

      num = this.creatClassNum();

      console.log('生成的班级码', num)

      // 检查该班级码是否已经存在于云数据库

      const db = wx.cloud.database();

      db.collection('class').where({

        number: num

      }).get()

      .then(res =>{

        console.log('数据库匹配结果', res.data.length)

        result_length = res.data.length

      })

      .catch(err=>{

        console.error(err)

      })

    }while(result_length != 0);

    // 将班级码放入页面数据

    that.setData({

      classNumber: num

    })

},

但实际执行过程中我发现循环不会停止......通过console.log(result_length),我发现原因在于result_length = res.data.length并不能更改整个函数里result_length的值,所以result_length一直为-1,循环也一直不会停。。。。。。

请问是什么原因造成的呢?是因为云数据库查询是异步操作的原因吗?还是因为var变量的作用域。。。?

更改的话我又应该改成什么样呢?百思不得其解。。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3