दिलचस्प पोस्ट
फ़ायरफ़ॉक्स इतिहास में वापस यात्रा के बाद, जावास्क्रिप्ट नहीं चलेगा एंड्रॉइड लॉलीपॉप टूलबार: स्क्रॉल करते समय उपकरण पट्टी को छुपाने / दिखाने के लिए कैसे? एंड्रॉइड लिस्ट्यूव्यू रीफ्रेश सिंगल रो JQuery के बिना माता पिता के पूर्ण दायरे के बच्चे तत्व को मँडरा करते हुए ऑनसाइट पर रोकें कौन सा ब्राउज़र <async = "async" /> का समर्थन करता है? दिनांक ऑब्जेक्ट को अंकीय वस्तुओं में बदलने से ifelse () को रोकने के लिए निर्धारित करें कि एंड्रॉइड ऐप पहली बार उपयोग किए जाने पर है सॉकेट प्रोग्रामिंग के लिए नेट 4.5 Async फ़ीचर का उपयोग करना टेबल में प्राथमिक कुंजी के लिए सबसे अच्छा अभ्यास क्या है? स्ट्रिंग से विशेष वर्ण कैसे निकालें? सी / सी ++: फोर्स बिट फील्ड ऑर्डर और संरेखण एक स्ट्रिंग के लिए एक SimpleXML ऑब्जेक्ट को मजबूर करते हुए, चाहे संदर्भ के WAMP त्रुटि: निषिद्ध है आपको इस सर्वर पर / phpmyadmin / तक पहुंचने की अनुमति नहीं है क्या । आईओएस 8 में ओरिएंटेशन-आधारित बनने वाले बाउंस सिमुज़? सी कार्यक्रम का निष्पादन समय

Firebase में एक सरणी के लिए अतुल्यकालिक पहुंच

यहां मेरा कोड है:

var userRef = new Firebase("https://awesome.firebaseio.com/users/"); var tokenRef = userRef.child(key+'/tokens'); tokenRef.once('value', function(snapshot){ var userTokenSync = $firebase(tokenRef); var userTokens = userTokenSync.$asArray(); console.log(userTokens); console.log(userTokens[0]); for(var i=0, len = userTokens.length; i < len; i++) { console.log(userTokens[i]); } console.log('done'); }) 

यह कोड किसी उपयोगकर्ता के टोकन को फायरबसे से मिलता है, और मैं टोकन सरणी को ब्राउज़ करना चाहता हूं।

कंसोल मुझे यह बताता है:

यहां छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, मैं सरणी का उपयोग नहीं कर सकता। क्या आपको यह पता है कि मैं यह कैसे कर सकता हूं?

अग्रिम में धन्यवाद।

वेब के समाधान से एकत्रित समाधान "Firebase में एक सरणी के लिए अतुल्यकालिक पहुंच"

एसिंक्रोनस लोडिंग 101 में आपका स्वागत है

  var userTokens = userTokenSync.$asArray(); console.log(userTokens); console.log(userTokens[0]); for(var i=0, len = userTokens.length; i < len; i++) { console.log(userTokens[i]); } console.log('done'); 

इस स्निपेट की पहली पंक्ति अपने डेटा को फायरबसे से लोड करना शुरू कर देती है । लेकिन यह लोड करने में कुछ समय लग सकता है और चूंकि ब्राउज़र चीजों को ब्लॉक नहीं करना चाहता है, इसलिए यह स्क्रिप्ट निष्पादित जारी है।

जब तक ब्राउज़र आपके console.log(userTokens); निष्पादित करता है console.log(userTokens); सबसे ज्यादा संभावना अभी तक लोड नहीं हुई है। इसलिए यह ऑब्जेक्ट को प्लेसहोल्डर के रूप में कंसोल में प्रिंट करता है।

जब तक यह लूप के for हो जाता है, तब तक डेटा फ़ायरबेज से लोड हो सकता है या नहीं।

कुछ बिंदु पर आपने लॉग-इन userTokens पास तीर क्लिक किया। उस समय तक डेटा फायरबेज से लोड हुआ था और कंसोल नवीनतम डेटा दिखाता है।

समाधान एक वादा के रूप में, कोणीय फायर द्वारा प्रदान किया गया है। कोणीयफायर भविष्य में किसी बिंदु पर वादा करता है कि आपके लिए डेटा है यदि आपके पास कोड का एक टुकड़ा है जो डेटा को लोड होने पर ही निष्पादित किया जाना चाहिए, तो आप इसे इस तरह लिख सकते हैं:

  var userTokens = userTokenSync.$asArray(); console.log(userTokens); console.log(userTokens[0]); userTokens.$loaded(function(userTokens) { for(var i=0, len = userTokens.length; i < len; i++) { console.log(userTokens[i]); } console.log('done'); }); console.log('at last line, but not done yet'); 

अद्यतन करें

ध्यान दें कि ऊपर $loaded जाने के लिए ऊपर का एक बुरा उदाहरण है। चूंकि $loaded केवल एक बार आग लग जाएगी, यह केवल सरणी की प्रारंभिक सामग्री को लॉग करेगा यदि आप बस यह देखने की कोशिश कर रहे हैं कि / जब आपका डेटा लोड हो रहा है, मुहावरेदार दृष्टिकोण userTokens को दायरे में जोड़ना है:

 $scope.userTokens = userTokens; 

और इसे अपने दृश्य / HTML में जोड़ें:

 <pre>{{ userTokens | json }}</pre> 

AngularFire अब जब उपयोगकर्ताटोकेंस किसी भी तरह से लोड या संशोधित हो जाएगा, तब मॉनिटर करेगा और यदि ऐसा होता है तो दृश्य को अपडेट करने के लिए AngularJS को बताएगा।

यह भी देखें:

  • फायरबसे, एंजरीजेएस और जियोफ़ायर – कारखाने से प्रतिक्रिया की प्रतीक्षा करें
  • फायरबेज कोनोबलफ़ायर बच्चे। $ AsObject गुण देना अनिर्धारित
  • कोणीय फायर – मैं एआरआरए के रूप में एआरआरए द्वारा क्यों वापस लौट नहीं सकता?
  • कॉलबैक फ़ंक्शन के लिए अभिभावकीय क्षेत्र में वैरिएबल पास करना
  • Firebase से बाल रिकॉर्ड प्राप्त करने की कोशिश कर रहा है

हां … हम इस प्रश्न को बहुत कुछ मिलते हैं।