Javascript-帮助从Firebase检索数据

Javascript-帮助从Firebase检索数据,javascript,firebase-realtime-database,Javascript,Firebase Realtime Database,下面的代码用于从firebase检索数据并将其转换为数组,但无论何时调用它,它都会阻止在代码内部调用其他函数,即使我可以在控制台中完全调用它们 我已经通过使用回调函数解决了这个问题,但现在它已经不再适用了。如何使这部分像一个正常的函数一样工作,我可以随时调用而不停止代码 function genList(){ dataRef.on('value', data => { let arr = (data.val()); let keys = Object.keys(ar

下面的代码用于从firebase检索数据并将其转换为数组,但无论何时调用它,它都会阻止在代码内部调用其他函数,即使我可以在控制台中完全调用它们

我已经通过使用回调函数解决了这个问题,但现在它已经不再适用了。如何使这部分像一个正常的函数一样工作,我可以随时调用而不停止代码

function genList(){
    dataRef.on('value', data => {
    let arr = (data.val());
    let keys = Object.keys(arr);
    for (let i = 0; i < keys.length; i++) {
        let k = keys[i];
        let title = arr[k].title;
        let author = arr[k].author;
        let pages = arr[k].pages;
        let date = arr[k].date;
        let bookmark = arr[k].bookmark;
        let newList = new Object();
        newList.title = title;
        newList.author = author;
        newList.pages = pages;
        newList.date = date;
        newList.bookmark = bookmark;
        bookList.push(newList);
    }
})}

函数genList(){
dataRef.on('value',data=>{
设arr=(data.val());
设keys=Object.keys(arr);
for(设i=0;i
我很难理解这个问题。你能解释一下“它阻止了其他函数在代码中被调用”是什么意思吗?或者更好:您可以在代码中添加一些显示问题的
console.log
语句吗?例如,如果我在这之后添加一个console.log('blablabla'),它就不起作用了。但是,如果我在该函数内部调用它或使用控制台,它会以某种方式工作。听起来,您正在努力解决这样一个事实:从Firebase(以及大多数现代云API)加载数据是异步进行的。但是,没有办法改变这一点,因此我建议您进一步了解您已经提到的回调、承诺和异步/等待。有关这些的更多信息,请参见,和