2014-01-09 4 views
4

Есть ли способ сделать эту функцию синхронной или добавить функцию обратного вызова для запуска, когда она будет завершена?Как получить синхронизирующие данные в firebase?

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; 
}; 
+1

Почему вы хотели бы? Как правило, создание синхронной асинхронной функции - это не ответ (но в некоторых случаях есть, так что мне любопытно) – tymeJV

+1

На самом деле, я просто хочу запустить код, когда все лиги будут извлечены, обратный вызов будет полезен. –

ответ

9

Просто включать обратный вызов & Run, если после того, как ваш 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); 
} 

И позвони код вроде:

dbGetLeagues(fb, function(leagues) { 
    console.log(leagues); 
}); 
+0

Ага, спасибо! –

+0

Но instaam console.log Как хранить в varible. – ishandutta2007

+0

Я получаю значение как undefined всякий раз, когда я пытаюсь хранить, как этот 'var extvar; dbGetLeagues (fb, function (лиги) { console.log (лиги); extvar = лиги }); console.log (extvar); ' – ishandutta2007

Смежные вопросы