दिलचस्प पोस्ट
विंडोज कंसोल के बिना पायथन स्क्रिप्ट चलाएँ पंक्तियों की संख्या (और प्रत्येक पंक्ति में कॉलम) की गणना करने के लिए कैसे एक पाठ JTextArea में लेता है? क्यों करता है ('0'? 'ए': 'बी') ('0' == सच? 'ए': 'बी') से अलग व्यवहार करते हैं ReactJS – क्या किसी भी समय "सेटस्टेट" को बुलाया जाता है? स्प्लिट टाइम सीरिज डेटा को समय के अंतराल में (एक घंटा कहते हैं) और उसके बाद गिनती कीजिए अजगर में एक्सटेंशन के बिना फ़ाइलों के प्रकार की जांच कैसे करें? विज़ुअल स्टूडियो (2008) 'क्लीन सॉल्यूशन' विकल्प Cplusplus.com में क्या गलत है? जावा ईई फ्रंटएंड विधि में सर्विस लेयर अपवाद को संभालना छवि शेयर का उद्देश्य जीमेल के लिए काम करता है लेकिन एफबी और ट्विटर को क्रैश करता है ढूँढना है कि कोई बिंदु आयताकार के अंदर है या नहीं शून्य के बराबर <>! = ऑपरेटर PHP में session_unset () और session_destroy () के बीच अंतर क्या है? git छिपाने की जगह और आवेदन डब्लूपीएफ में आवेदन कहाँ है? डूएन्ट्स ()

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 से बाल रिकॉर्ड प्राप्त करने की कोशिश कर रहा है

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