純粋な JavaScript Promise (組み込み実装またはポリフィル) があります。
var promise = new Promise(function (resolve, reject) { /* ... */ });
仕様によれば、Promise は次のいずれかになります。
- 「解決した」と「解決した」
- 「解決」と「拒否」
- '保留中'
Promise を同期的に調査して、次のことを決定したいユースケースがあります。
約束は果たされましたか?
もしそうなら、約束は解決されますか?
#then()
Promise の状態が変わった後に非同期で実行される作業をスケジュールするために を使用できることは知っています。これを行う方法を尋ねているのではありません。
この質問は、Promise の状態の同期照会に関するものです。どうすればこれを実現できますか?
ベストアンサー1
ネイティブ JavaScript プロミスには、このような同期検査 API は存在しません。ネイティブ プロミスではこれを行うことは不可能です。仕様では、このような方法は指定されていません。
ユーザーランド ライブラリはこれを実行でき、特定のエンジン (v8 など) をターゲットにしていて、プラットフォーム コードにアクセスできる場合(つまり、coreでコードを記述できる場合)、特定のツール (プライベート シンボルなど) を使用してこれを実現できます。ただし、これは非常に特殊なものであり、ユーザーランドではありません。