1. ホーム
  2. javascript

プロミスからデータを返す方法 [重複]について

2023-09-03 17:28:50

質問

を取得する必要があります。 response.data をプロミスから取り出して、それを囲む関数で返せるようにする必要があります。通常のJavaScriptのスコープのため、私がコード化した方法ではおそらくできないことは分かっています。何か方法はありますか、それはできるのですか?

その console.log を #1 で実行すると、正しいデータが生成されます。 コンソール.ログ #2は常に'a'を生成します。

function addSiteParentId(nodeId) {   
    var theParentId = 'a';
    var parentId = relationsManagerResource.GetParentId(nodeId)
                        .then(function(response){                               
                            theParentId = response.data;
                            console.log(theParentId);  // #1
                        });
    console.log(theParentId);  // #2
    return theParentId;
}

何かご指摘があればお願いします。

どのように解決するのですか?

プロミスの基本原則の1つは、非同期で処理されることです。つまり、プロミスを作成し、その結果をコード内ですぐに同期的に使用することはできません(例えば、プロミスを開始した関数内からプロミスの結果を返すことは不可能です)。

代わりに行いたいことは、おそらく プロミスそのものを返すことです。 それから、その結果を必要とするどんな関数でも .then() を呼び出すことができ、その結果はプロミスが解決されたときにそこにあります。

HTML5Rocks のリソースで、プロミスのライフサイクルと、その出力がどのように非同期で解決されるかについて説明しています。

https://web.dev/promises/