js によって返される Promise オブジェクトには値がありますが、戻り値が "" になるのはなぜですか

今日jsを処理しているときに発見した問題は、返されたpromiseオブジェクトには値があるのに、内部の属性値を返すと常に空の文字列「」になるということです。

ここに画像の説明を挿入します
result.data を返すときに
ここに画像の説明を挿入します
理由を調べたところ、次のことがわかりました。

JavaScript の Promise オブジェクトは、非同期操作の結果を表すメカニズムであり、保留 (進行中)、履行 (成功)、および拒否 (失敗) の 3 つの状態があります。Promise オブジェクトの値は、開始直後に設定されるのではなく、非同期操作の完了後に成功の値 (満たされた) または失敗の理由 (拒否された) に設定されます。

Promise オブジェクトのコールバック関数で値を返し、その値が満たされると、後から Promise チェーンでその値にアクセスできるようになります。コード内で戻り値が空の文字列 "" である場合は、次の理由が考えられます。

非同期操作はまだ完了していません: Promise オブジェクトのコールバック関数で Promise の値にアクセスしても、Promise オブジェクトが非同期操作をまだ完了していない場合、値は空の文字列になる可能性があります。Promise の値には、完了後に必ずアクセスしてください。

非同期操作が失敗する: Promise オブジェクトが最終的に拒否された場合、Promise チェーンで返される値は成功値ではなく、失敗の理由になります。これにより、非同期操作が失敗した理由によっては、戻り値が空の文字列になる場合があります。

不適切な例外処理: Promise チェーンで例外が (.catch または try...catch を通じて) 適切に処理されない場合、Promise チェーン内の Promise が拒否され、後続の Promise の値に影響を与える可能性があります。

戻り値が空の文字列である理由をよりよく理解するために、Promise チェーン内の個々の Promise オブジェクトの状態と例外処理を必ず確認してください。

解決する

メソッドを追加しました。await
ここに画像の説明を挿入します
先頭のクエリが見つかる前にメソッドが返される可能性があります。問題を解決するには、キーワード await を追加します。

おすすめ

転載: blog.csdn.net/wang121213145/article/details/133020008