How to return a value from an async function?
In the provided code, the init() method returns a Promise, but the getPostById() method is trying to access the value returned by the Promise directly. To resolve this, the init() method needs to be modified to return the value of getPostById() after the Promise is resolved.
Here is the updated code:
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 ) } }
Now, the myFunc function can be written as follows:
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 ) }
This code will correctly return the value of getPostById().
The above is the detailed content of How to Return a Resolved Value from an Async Function Within Another Async Function?. For more information, please follow other related articles on the PHP Chinese website!