तो नीचे कुछ छोटे कार्य दिए गए हैं। createFeedPadFromScratch मेरा मुख्य कार्य है जो async है और सैद्धांतिक रूप से getCurrentId फ़ंक्शन कॉल को हल करने के लिए प्रतीक्षा करनी चाहिए इससे पहले कि यह currentId चर को सांत्वना दे। GetCurrentId फ़ंक्शन एक साधारण फायरस्टोर डीबी क्वेरी है जो एक नंबर देता है। GetCurrentId फ़ंक्शन के अंदर, सही मान को सांत्वना दी जा रही है और मैं इसे सांत्वना देने के बाद सही मान लौटाता हूं, लेकिन मुख्य फ़ंक्शन में, जब मैं उस वापसी मान को कंसोल करता हूं, तो मुझे अपरिभाषित मिलता है?

async function createFeedPadFromScratch() {
    let currentId = await getCurrentId();
    console.log(currentId);
}

function getCurrentId() {
    let currentIdRef = db.collection('feedPads').doc('getId');
    var currentId;

    currentIdRef.get().then(function(doc) {
        if (doc.exists) {
            currentId = doc.data().currentId;
            console.log(currentId, typeof currentId);
            return new Promise(resolve => {
                resolve(currentId);
            });
        } else {
            // doc.data() will be undefined in this case
            console.log("No such document!");
        }
      }).catch(function(error) {
          console.log("Error getting document:", error);
    });
}

-1
Avi Saxena 29 अक्टूबर 2019, 17:24

1 उत्तर

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

मैं उलझन में हूं कि आप दोनों कार्यों में एसिंक/प्रतीक्षा का उपयोग क्यों नहीं कर रहे हैं। आप सिंटैक्स के साथ प्रभावी ढंग से और समान रूप से काम करके बहुत सारे कोड को समाप्त कर सकते हैं।

async function createFeedPadFromScratch() {
    try {
        let currentId = await getCurrentId();
        console.log(currentId);
    catch (error) {
       console.log("Error getting user id:", error);
    }
}

async function getCurrentId() {
    let currentIdRef = db.collection('feedPads').doc('getId');
    var currentId;

    const doc = await currentIdRef.get()
    if (doc.exists) {
        currentId = doc.data().currentId;
        console.log(currentId, typeof currentId);
        return currentId;
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
        return null;
    }
}
0
Doug Stevenson 29 अक्टूबर 2019, 19:49