简单的反应问题让我想起了一秒钟:
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.
,但逻辑并没有在我身边找到我
答案 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);
});
}