Is there any way I can make this function synchronous, or add a callback function to run when it's finished?
var fbGetLeagues = function(fb) {
var leagues = [];
fb.child('leagues').once('value', function(snapshot) {
snapshot.forEach(function(child) {
var id = child.name();
var name = child.child('name').val();
leagues.push({'id': id, 'name': name});
});
});
return leagues;
};
Is there any way I can make this function synchronous, or add a callback function to run when it's finished?
var fbGetLeagues = function(fb) {
var leagues = [];
fb.child('leagues').once('value', function(snapshot) {
snapshot.forEach(function(child) {
var id = child.name();
var name = child.child('name').val();
leagues.push({'id': id, 'name': name});
});
});
return leagues;
};
Share
Improve this question
edited Jan 9, 2014 at 14:27
Viktor Sehr
asked Jan 9, 2014 at 14:17
Viktor SehrViktor Sehr
13.1k6 gold badges62 silver badges95 bronze badges
2
- 1 Why would you want to? Generally, making an async function synchronous is not the answer (but in some cases there are, so I'm curious) – tymeJV Commented Jan 9, 2014 at 14:24
- 1 Actually, I just want to run code when all the leagues are fetched, a callback would be good to. – Viktor Sehr Commented Jan 9, 2014 at 14:28
1 Answer
Reset to default 10Just include a callback & Run if after your forEach
:
var dbGetLeagues = function(fb, callback) {
snapshot.forEach(function(child) {
var id = child.name();
var name = child.child('name').val();
leagues.push({'id': id, 'name': name});
});
callback(leagues);
}
And call the code like:
dbGetLeagues(fb, function(leagues) {
console.log(leagues);
});