gpt4 book ai didi

react-native - 同步调用多个 "measure"操作

转载 作者:行者123 更新时间:2023-12-04 03:03:41 25 4
gpt4 key购买 nike

我必须借助 measure() 函数测量多个值。
因为是异步操作,所以只能这样写:

this.refContainerView.measure((x, y, width, height, pageX, pageY) => {
const containerViewHeight = height

this.refCommentList.measure((x, y, width, height, pageX, pageY) => {
const commentListOffset = pageY
const commentListHeight = height

// do something

})
})

如果需要测量更多的组件,它看起来就像一个回调 hell 。
是否可以同步编写代码,例如在 await 或其他帮助下,例如:

const contaierView = this.refContainerView.measure()
const commentList = this.refCommentList.measure()

// and then do something with
contaierView {x, y, width, height, pageX, pageY}
commentList {x, y, width, height, pageX, pageY}

最佳答案

我找到了那种解决方案。
measure() 不是 promise,但具有回调函数:

measureComponent = component => {
return new Promise((resolve, reject) => {
component.measure((x, y, width, height, pageX, pageY) => {
resolve({ x, y, width, height, pageX, pageY })
})
})
}

onDoSomething = async () => {
const [containerView, commentList] = await Promise.all([
this.measureComponent(this.refContainerView),
this.measureComponent(this.refCommentList),
])

// do here with containerView and commentList measures
}
}

关于react-native - 同步调用多个 "measure"操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com