范围firebase函数中的变量 - 异步循环

时间:2017-09-26 08:21:14

标签: firebase asynchronous google-cloud-functions

我有以下简单的循环,我多次使用。我遍历一组数据,需要执行异步调用(在本例中为Firebase)以获取有关特定键的更多详细信息。

当我运行异步功能时,我经常需要当前的密钥。但是,由于admin.database是异步的,因此循环继续进行。通常,在它到达console.log之前,currentItem已经更改为循环中的下一个项目。

我认为这是一个常见问题,但在admin.database()函数范围内获得正确值的最佳方法是什么?

function test() {

   const items = ["a", "b", "c"];
   for (var i=0; i< items.length; i++) {

     ...do stuff
     var currentItem = items[i];
     admin.database().ref("/different/items/"+currentItem).once("value").then(arraySnap => {
             console.log(currentItem)
     })    
   }
}

0 个答案:

没有答案