1

I have i do a request, after this my variable (elecfirebase) is always [ ]

function a(){
let elecfirebase=[]
    firebase
        .database()
        .ref("/fournisseurs")
        .child(0)
        .child("data")
        .on("value", data => {
          elecfirebase=data.val();    
      });
console.log("elecfirebase ",elecfirebase)
}
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
loveALgo
  • 13
  • 4

1 Answers1

2

console.log("elecfirebase ",elecfirebase) Above console.log will always give you [] because firebase function is async function

You can call a function after getting the data like as follows

function a(){
    let elecfirebase=[]
    firebase
        .database()
        .ref("/fournisseurs")
        .child(0)
        .child("data")
        .on("value", data => {
          elecfirebase=data.val(); 
          onData(elecfirebase);
      });

}
function onData(elecfirebase){
     console.log(elecfirebase)
}

If you want to use this value somewhere else too then use callback or promise. Here is the example of callback

function foo(){
...
...
//calling function with callback
a(function(elecfirebase){

})
...
...
}

function a(callback){
    let elecfirebase=[]
    firebase
        .database()
        .ref("/fournisseurs")
        .child(0)
        .child("data")
        .on("value", data => {
          elecfirebase=data.val(); 
          callback(elecfirebase);
      });

}

Hope it will be helpful

Sourabh Somani
  • 2,138
  • 1
  • 13
  • 27