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().
以上是如何从另一个异步函数中的异步函数返回解析值?的详细内容。更多信息请关注PHP中文网其他相关文章!