2017-01-15 53 views
5

geri almak. Belirli verileri kontrol etmek istiyorum ve Firebase bu verileri aldıktan sonra, sadece belirli kapsamında olup Firebase için ameliyattan sonra kontrol edebilirsiniz. Neden oluyor? o kadar subscribe kod verileri almak ne zaman this.af.database.list çalıştırır asenkron var this.af.database.list çünküAngularFire2 erişim verileri sonra AngularFire2 ile benim Firebase veri almaya çalışıyorum

this.af.database.list('/users/1qfcMAQnglX9jsW5GdLpPko1HqE2', { preserveSnapshot: true}) 
.subscribe(snapshots=>{ 
    snapshots.forEach(snapshot => { 
     if(snapshot.key=="reg_boolean"){ 
     console.log(snapshot.val()); 
     this.bo=snapshot.val(); 
     } 
     this.currentUser.push({key:snapshot.key,value:snapshot.val()}); 
     console.log(this.currentUser); 
     //console.log(snapshot.key, snapshot.val()); 
     if(this.bo==true){console.log("happy"); }; //i can access only in this scope 
    }); 

}) 
if(this.bo==true){console.log("happy"); }; //why i can access this value??it's undefined, this happen before the subscribe with angularfire2 

enter image description here

+1

Victor'un cevabı açıklıyor, ama aynı zamanda bu referans soruları için sevk: [? Ben bir zaman uyumsuz çağrısından yanıtı dönmek nasıl] (http://stackoverflow.com/q/14220321 /), (http://stackoverflow.com/q/1739800) ve [Değişkenler $ .GetJSON yalnızca erişilebilir fonksiyonu içinde işlevi sırasında set] [jQuery: ajax çağrı başarıdan sonra Dönüş veri] (http://stackoverflow.com/1/5316697). –

cevap

8

Bu tanımsız var:

Aşağıda benim kodudur. Kod hattına if(this.bo==true){console.log("happy"); }; geldiğimde Yani Hiç bitiremedi abone çünkü hiçbir ilgisi yoktur.

abone eski vaadi gibi ama şimdi açısal ve iyonik o odaklanma bir yeri vardır, çünkü bunu öğrenmek için sana tavsiye rxjs ile çalışıyor.

https://www.learnrxjs.io/ bakarak deneyin

+0

Victor Şimdi bana her türlü çözüme var mı ya da bir şey bu sorunu çözebilir? çünkü rxjs ile nasıl çalışacağından emin değilim. –

+0

@AdirZoari verilerle ne yapmak istersiniz? –

+0

tamam, size genel olarak açıklarım. ilk kez kayıt olduktan sonra gerekli tüm verileri (bölüm adı, yıl) doldurmak için hesap oluşturup tamamladıktan sonra reg_boolean'ı uygulamaya girdikten sonra, reg_boolean doğruysa veriyi kontrol eder. bu yüzden departman adını ve bir yıl tekrar seçmesine gerek yok, bu yüzden ana sayfaya giriş yapıp kayıt olmuyor. –