gpt4 book ai didi

android - 如何等待 firebase 数据获取完成并获取不是 react native promise 的值?

转载 作者:行者123 更新时间:2023-11-28 23:30:05 24 4
gpt4 key购买 nike

我在 firebase 数据中有如下所示的数据:

enter image description here

获取客户数据的代码:

getCustomersOnQeueu = async () => {
let customers = this.customersRef.orderByChild("ticket").once('value')
return customers
}

渲染数据的代码:

renderCustomers = () => {
let customersViews = []
this.getCustomersOnQeueu().then((customers) => {
let customersTickets = customers.val()
console.log(customersTickets)
let sortedKeys = Object.keys(customersTickets).sort(function(a, b){
return customersTickets[b].ticket - customersTickets[a].ticket
})
console.log(sortedKeys)
for(i=0; i<sortedKeys.length; i++) {
let key = sortedKeys[i]
console.log(customersTickets[key]["customer"])
customersViews.push(<View>
<Text>{customersTickets[key["customer"]}</Text>
</View>)
}
})
return (<View>
<Text>Available Customers: </Text>
{customersViews}
</View>)
}

render() {
return (
<View>
{this.renderCustomers()}
</View>
)
}

现在在获取和排序数据后,我可以在控制台中看到以下内容:

enter image description here

我有一个问题,就是这行代码永远不会执行:

customersViews.push(<View>
<Text>{customersTickets[key["customer"]}</Text>
</View>)

我猜可能是因为 customersViews 数组是在渲染完成后初始化的,而不是在渲染完成之前,我如何等待数据获取和排序完成然后渲染数据?

最佳答案

当您尝试获得 Firebase 响应时,您实际上并不是在等待它。下面的代码不会等待它被执行。

getCustomersOnQeueu = async () => {
let customers = this.customersRef.orderByChild("ticket").once('value')
return customers
}

要等待它执行,请使用 AWAIT:

getCustomersOnQeueu = async () => {
let customers = await this.customersRef.orderByChild("ticket").once('value')
return customers
}

关于android - 如何等待 firebase 数据获取完成并获取不是 react native promise 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926136/

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