async फ़ंक्शन से मान कैसे वापस करें?
प्रदान किए गए कोड में, init() विधि एक वादा लौटाती है, लेकिन getPostById() विधि सीधे प्रॉमिस द्वारा लौटाए गए मान तक पहुंचने का प्रयास कर रही है। इसे हल करने के लिए, वादा हल होने के बाद getPostById() का मान वापस करने के लिए init() विधि को संशोधित करने की आवश्यकता है।
यहां अद्यतन कोड है:
class Posts { constructor(url) { this.ready = false this.data = {} this.url = url } async init() { try { let res = await fetch( this.url ) if (res.ok) { let data = await res.json() // Do bunch of transformation stuff here this.data = data this.ready = true return this.getPostById(4) // Return the value of getPostById() } } catch (e) { console.log(e) } } getPostById(id){ return this.data.find( p => p.id === id ) } }
अब, myFunc फ़ंक्शन को इस प्रकार लिखा जा सकता है:
let myFunc = async () => { const postId = 4 await allPosts.init() // I need to wait for this to finish before returning // This is logging correct value console.log( 'logging: ' JSON.stringify(allPosts.getPostById( postId ), null, 4) ) // Return the RESULT of allPosts.getPostById( postId ) ??? return await allPosts.getPostById( postId ) }
यह कोड getPostById() का मान सही ढंग से लौटाएगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3