function getEleHeight(demo) {
return new Promise((resolve, reject) => {
wx.createSelectorQuery().select(demo).boundingClientRect((rect) => {
if(rect){
resolve(rect)
}else {
Promise.reject('获取不到id rect的值为'+rect)
}
}).exec()
})
}
有时候调用这个代码为null 因为页面渲染的时候 获取不到这个id 有什么好的解决办法 现在做首页 有个监听导航 有时候滑动太快 这个获取离顶部距离有偏差
我加了延迟600毫秒但还是获取为null 有时候滑太快 导航里顶部距离为0
调用这个方法的地方 截个图呢
这个要渲染完成后调用才能正常获取。
我看你的描述大概知道你的需求。性能更高的替代方案可以用:createIntersectionObserver
相关文档:
IntersectionObserver | 微信开放文档
https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.createIntersectionObserver.html
1、比如设置个标志,setData他有个success回调,在所有相关数据setData success后再设置这个标志,然后调用
2、用定时器每隔500ms读取一次,数据为null就一直重试
3、用Promise.all来处理异步。