之后首先在Firebase云功能中执行代码

时间:2018-07-08 12:41:02

标签: javascript node.js firebase-realtime-database google-cloud-functions

这是我的代码

forEach

我正在Firebase云中部署以上功能。我已经评论了先执行哪些代码,然后执行哪些代码。我不明白为什么会这样。 之后执行的部分是从firebase中获取数据并使用getDistance函数计算两点之间的距离。由于它位于其下面的代码之前,因此应首先执行。

2 个答案:

答案 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
})