ホームページ > ウェブフロントエンド > jsチュートリアル > 別の非同期関数内の非同期関数から解決された値を返す方法

別の非同期関数内の非同期関数から解決された値を返す方法

DDD
リリース: 2024-10-18 10:20:04
オリジナル
445 人が閲覧しました

How to Return a Resolved Value from an Async Function Within Another Async Function?

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート