在一个循环中,用createSelectorQuery获取的页面元素的value,在得到后,再插入数据库,但是总是无法同步,由于query.select.exec()语句执行较慢,下面的插入数据库语句会先执行,获取不到要插入的变量,如果在下方用setTimeout暂停,这样只插入一条记录,那是ok的,但是要插第二条就有问题了,因为那边在暂停,但它会循环下去继续执行,这样插入的数据也不对了,谁有好办法呀(代码见附件截图)
4***@qq.com
- 发布:2024-06-24 11:01
- 更新:2024-08-01 09:29
- 阅读:128
可以使用 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)=>{
//···某些操作
})