4***@qq.com
4***@qq.com
  • 发布:2024-06-24 11:01
  • 更新:2024-08-01 09:29
  • 阅读:128

createSelectorQuery同异步问题

分类:uni-app

在一个循环中,用createSelectorQuery获取的页面元素的value,在得到后,再插入数据库,但是总是无法同步,由于query.select.exec()语句执行较慢,下面的插入数据库语句会先执行,获取不到要插入的变量,如果在下方用setTimeout暂停,这样只插入一条记录,那是ok的,但是要插第二条就有问题了,因为那边在暂停,但它会循环下去继续执行,这样插入的数据也不对了,谁有好办法呀(代码见附件截图)

2024-06-24 11:01 负责人:无 分享
已邀请:
4***@qq.com

4***@qq.com (作者)

没人知道?

m***@gmail.com

m***@gmail.com

可以使用 Promise 后在.then里 调用,
举个例子,我想在获取top_box,body_title,clean_num的高度后执行某些操作,可以这么写:

    Promise.all([  
      new Promise((resolve, reject) => {  
        uni.createSelectorQuery().select('#top_box').boundingClientRect(async data => {  
          top_box = data.height;  
          return resolve();  
        }).exec()  
      }),  
      new Promise((resolve, reject) => {  
        uni.createSelectorQuery().select('#body_title').boundingClientRect(async data => {  
          body_title = data.height;  
          return resolve();  
        }).exec()  
      }),  
      new Promise((resolve, reject) => {  
        uni.createSelectorQuery().select('#clean_num').boundingClientRect( async data => {  
          clean_num = data.height;  
          return resolve();  
        }).exec()  
      })  
    ]).then((res)=>{  
      //···某些操作  
    })
靐齉齾麤龖龗

靐齉齾麤龖龗 - 解决不了问题,那就解决提出问题的人

不行就使用递归

要回复问题请先登录注册