我有以下简单的循环,我多次使用。我遍历一组数据,需要执行异步调用(在本例中为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)
})
}
}