这是我的代码
forEach
我正在Firebase云中部署以上功能。我已经评论了先执行哪些代码,然后执行哪些代码。我不明白为什么会这样。 之后执行的部分是从firebase中获取数据并使用getDistance函数计算两点之间的距离。由于它位于其下面的代码之前,因此应首先执行。
答案 0 :(得分:2)
Firebase与Promise一起使用,从而解决结果或拒绝结果。
这意味着结果(根据您的情况)是需要一段时间才能获取的。由于您的代码未嵌套,因此将异步执行任何其他函数
我建议将需要执行的内容嵌套在sourceCompatibility = 10 // You can also decrease your souce compatibility to 1.8
//java 9+ does not have Jax B Dependents
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
块中,或者将功能解耦并将其放在单独的函数中,然后在传递相关参数(在这种情况下为快照数据)的同时调用该函数
答案 1 :(得分:1)
将首先执行呼叫ref.on("value", callback)
。 callback
不过会在将来的某个地方执行。
在这种情况下,最好使用once
:
ref.once('value').then(snapshot => ...)
所有其他逻辑都应存在于then
中,因为它取决于snapshot
中的值:
return ref.once('value).then(snapshot => {
var data = []
...
snapshot.forEach(child => {
data.push(...)
})
...
// other code
})