यदि मेरा डिवाइस ऑफ़लाइन होने पर मैं कोड की निम्न पंक्ति चलाता हूं, तो card स्थानीय कैश में जोड़ दिया जाएगा। लेकिन आवेदन अगली पंक्ति में कभी नहीं जाता है।

const data = await firebase.firestore().collection('cards').add(card);
console.log(data) // this line never get executed!
3
a.toraby 1 जून 2019, 19:08

1 उत्तर

सबसे बढ़िया उत्तर

लिखने के तरीके (जैसे add()) एक वादा लौटाते हैं जो सर्वर पर राइट ऑपरेशन पूरा (या अस्वीकार) होने के बाद पूरा होता है। चूंकि आप सर्वर से कनेक्ट नहीं हैं, ऐसा कभी नहीं होता है और इस प्रकार आपका await अवरुद्ध रहेगा।

ध्यान दें कि स्थानीय लेखन संचालन के लिए आपको await की आवश्यकता नहीं है, क्योंकि स्थानीय कैश में लिखना समकालिक रूप से होता है। तो जैसे ही add(...) कॉल रिटर्न (और कोई अपवाद नहीं उठाता), आप सुनिश्चित हो सकते हैं कि लेखन स्थानीय कैश में पूरा हो गया था। इसलिए, आपको केवल await का उपयोग करना चाहिए यदि आपको यह जानने की आवश्यकता है कि लेखन भी सर्वर द्वारा नियंत्रित किया गया था, इस स्थिति में आप जो व्यवहार देखते हैं वह वही है जो आप चाहते हैं।

8
Frank van Puffelen 1 जून 2019, 16:18