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 中国語 Web サイトの他の関連記事を参照してください。