繁体   English   中英

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

[英]Passing an array to another function in 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. 某个地方,但逻辑不是很默契

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

您可能会返回一个承诺,该承诺将使用异步获取的值进行解析:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM