Ich möchte, dass alle Inhalte von Firebase bei jeder Aktualisierung nach dem Zufallsprinzip geladen werden, aber ich kann nicht alle meine Firebase-Daten in ein Wörterbuch übertragen, in das ich sie randomisieren kann.Javascript - Wie Daten aus Google Firebase nach dem Zufallsprinzip abgerufen werden?
Ich habe ein globales Array und ich versuche, meine Dateien dorthin zu schieben und dann durchlaufen sie. Aber Javascript hält das Array für leer, weil das Timing ausgeschaltet ist.
var randomStore = new Array;
function homeSetup() {
if(ref.toString() == featuredRef.toString()){
addFeaturedImages();
}
console.log('randomStore length is ' + randomStore.length);
}
function addFeaturedImages(){
featuredRef.on("child_added", function(snapshot) {
var doc = {
// 'name': snapshot.key, //name is the id
'artist': snapshot.val().artist,
'author': snapshot.val().author,
'projectTitle': snapshot.val().projectTitle,
'text': snapshot.val().text
};
randomStore.push(doc);
console.log('randomStore length HERE is ' + randomStore.length);
});
}
Bedenkt man, wie der Code eingegeben wird, würde ich davon ausgehen, dass das Protokoll zuerst eingegeben würden ‚randomStore Länge HIER ist‘, sondern das ich bekommen:
randomStore length is 0
randomStore length HERE is 1
randomStore length HERE is 2
randomStore length HERE is 3
Wenn ich in meine Daten einsehen ein anderes Array, dann könnte ich es manipulieren, um nach dem Zufallsprinzip zu sortieren und so was zu tun, aber ich kann es nicht richtig da hinein bekommen.
Sie müssen 'addFeaturedImages() nicht aufrufen'. Lassen Sie einfach das auf wie es ist, ohne die addFeaturedImages – IvRRimUm
IvRRimUm, macht keinen Unterschied. Ich habe diese Funktion, weil ich mehr Gruppen habe, und es ist in Ordnung. Was sind Javascript Promise? Ich würde annehmen, dass die console.log innerhalb der "Ref.on" -Funktion zuerst gedruckt würde, aber es ist AFTER gedruckt. Daher würde ich annehmen, dass es asynchron läuft, weil es Firebase ist, also wird die console.log innerhalb von homeSetup vor den geloopten ausgeführt. – Homerdough
Ja, Promises sind genau dafür gemacht. Ich werde den Beitrag mit einem Zitat aus der Dokumentation aktualisieren. – IvRRimUm