1. ホーム
  2. javascript

[解決済み] オブジェクトがPromiseであるかどうかを判断するにはどうすればよいですか?

2022-03-21 16:05:04

質問

ES6 Promiseなのか、bluebird Promiseなのか、Q Promiseなのか、などなど。

与えられたオブジェクトが Promise であるかどうかをテストするにはどうすればよいですか?

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

プロミスライブラリはどのように決定するのか

を持つ場合、それは .then 機能 - それは だけ 標準的なプロミス・ライブラリが使用します。

Promises/A+の仕様には、以下のような概念があります。 then を持つオブジェクトです。 then メソッドです。プロミスは 何でも というメソッドがあります。あなたが挙げたプロミスの実装はすべてそうです。

を見ると 仕様 :

2.3.3.3 の場合 then が関数である場合、x を this、第一引数 resolvePromise、第二引数 rejectPromise で呼び出します。

また、この設計上の判断の根拠も説明されています。

この扱いは then を公開する限り、プロミスの実装は相互運用が可能です。 then メソッドを使用します。また、Promises/A+の実装は、合理的なメソッドで不適合な実装を「同化」させることができます。

どのように決定すべきか

しないほうがいい - その代わりに Promise.resolve(x) ( Q(x) となるような(Qでは 常に は、任意の値または外部 then を信頼できるプロミスに変換します。自分でこれらのチェックを行うよりも安全で簡単です。

本当に 確認が必要ですか?

いつでも実行することができます テストスイート :D