将数组传递给ReactJS中的另一个函数

时间:2016-10-26 10:36:22

标签: javascript arrays function reactjs

简单的反应问题让我想起了一秒钟:

  readData: function(){
    var readFromCpDev1 = firebase.database().ref('environments/' + 'cp-dev1');
    var envUsersArray = [];
    readFromCpDev1.on('value', function(snapshot) {
      envUsersArray.push(snapshot.val())
      return envUsersArray;
    });
    console.log(envUsersArray, 'hey');
  },

anotherfunc: function(){
}

我有这个功能,我想返回envUsersArray并在任何地方使用它。显然,目前它返回一个空白数组,因为readData函数不在快照函数的范围内。 如何将其传递给readData函数,然后在另一个函数中使用它,例如anotherfunc

我知道我可能需要在某个地方拨打this.,但逻辑并没有在我身边找到我

2 个答案:

答案 0 :(得分:1)

我建议使用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
    });
  }

答案 1 :(得分:0)

您可以返回一个承诺,该承诺将使用异步检索的值解析:

  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);
   });
  }