score:1

Accepted answer

i'd suggest using promises.

  readdata: function(){
    return new promise(function(resolve) {
      var readfromcpdev1 = firebase.database().ref('environments/' + 'cp-dev1');
      var envusersarray = [];
      readfromcpdev1.on('value', function(snapshot) {
        envusersarray.push(snapshot.val())
        resolve(envusersarray);
      });
    });
  },

  anotherfunc: function(){
    this.readdata().then(function(arr) {
      //do stuff here
    });
  }

score:0

you may return a promise that will resolve with value that is retrieved asynchronously:

  readdata: function() {
    var readfromcpdev1 = firebase.database().ref('environments/' + 'cp-dev1');
    var envusersarray = [];
      return new promise(function(success) {
      readfromcpdev1.on('value', function(snapshot) {
        envusersarray.push(snapshot.val())
        success(envusersarray);
      }
    });
  },

  anotherfunc: function(){
   this.readdata().then(function(result) {
     console.log(result);
   });
  }

Related Query

More Query from same tag