ES6 でもPromise
、Bluebird Promise
、QPromise
などでも構いません。
特定のオブジェクトが であるかどうかをテストするにはどうすればよいですかPromise
?
ベストアンサー1
プロミスライブラリがどのように決定するか
関数がある場合.then
、それが標準の Promise ライブラリが使用する唯一のものです。
then
Promises/A+ 仕様には、基本的に「メソッドを持つオブジェクト」である ableという概念があります。Promises は then メソッドを持つあらゆるものthen
を同化しますし、そうすべきです。あなたが言及したすべての Promise 実装はこれを行います。
見てみると仕様:
2.3.3.3
then
が関数の場合、xをthis、最初の引数resolvePromise、2番目の引数rejectPromiseとして呼び出します。
また、この設計上の決定の根拠についても説明しています。
この
then
ables の処理により、Promises/A+ 準拠のメソッドを公開している限り、Promises 実装は相互運用できるようになりますthen
。また、Promises/A+ 実装は、非準拠の実装を適切な then メソッドで「同化」することもできます。
どのように決めるべきか
そうすべきではありません。代わりに、Promise.resolve(x)
( Q(x)
Q の) を呼び出すと、常に任意の値または外部then
オブジェクトが信頼できる Promise に変換されます。これらのチェックを自分で実行するよりも安全で簡単です。
本当に確かめる必要があるのでしょうか?
いつでも実行できますテストスイート:D