1. ホーム
  2. javascript

[解決済み】JavaScriptのPromiseの状態を同期的に決定するにはどうすればよいですか?

2022-04-13 01:28:23

質問

純粋なJavaScriptのPromise(組み込み実装またはポリフィル)を持っています。

var promise = new Promise(function (resolve, reject) { /* ... */ });

から 仕様 のいずれかであり、プロミスは以下のいずれかである。

  • 'setted'と'resolved'
  • 解決済み」と「拒否」。
  • '保留'

私は、Promiseを同期的に照会して判断したいユースケースがあります。

  • プロミスが決済されたか?

  • の場合、そのプロミスは解決されましたか?

を使用できることは知っています。 #then() を使用して、Promise が状態を変更した後に非同期で実行される作業をスケジュールします。私はこれをどのように行うかを尋ねているのではありません。

この質問は、特に Promiseの状態の同期的な問い合わせ . どうすれば実現できるのでしょうか?

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

JavaScriptのネイティブプロミスには、そのような同期検査APIは存在しません。 ネイティブのプロミスでこれを行うことは不可能です。仕様書にもそのようなメソッドは明記されていません。

ユーザーランドのライブラリではこれが可能で、特定のエンジン(v8など)をターゲットにしていて、かつ プラットフォームコード (でコードを書くことができる)。 コア ) の場合、特定のツール (プライベートシンボルなど) を使ってこれを実現することができます。それは超特殊なことで、ユーザーランドにはないのですが。