オブジェクトが Promise であるかどうかを確認するにはどうすればよいでしょうか? 質問する

オブジェクトが Promise であるかどうかを確認するにはどうすればよいでしょうか? 質問する

ES6 でもPromise、Bluebird Promise、QPromiseなどでも構いません。

特定のオブジェクトが であるかどうかをテストするにはどうすればよいですかPromise?

ベストアンサー1

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

関数がある場合.then、それが標準の Promise ライブラリが使用する唯一のものです。

thenPromises/A+ 仕様には、基本的に「メソッドを持つオブジェクト」である ableという概念があります。Promises は then メソッドを持つあらゆるものthenを同化しますし、そうすべきです。あなたが言及したすべての Promise 実装はこれを行います。

見てみると仕様:

2.3.3.3thenが関数の場合、xをthis、最初の引数resolvePromise、2番目の引数rejectPromiseとして呼び出します。

また、この設計上の決定の根拠についても説明しています。

このthenables の処理により、Promises/A+ 準拠のメソッドを公開している限り、Promises 実装は相互運用できるようになりますthen。また、Promises/A+ 実装は、非準拠の実装を適切な then メソッドで「同化」することもできます。

どのように決めるべきか

そうすべきではありません。代わりに、Promise.resolve(x)( Q(x)Q の) を呼び出すと、常に任意の値または外部thenオブジェクトが信頼できる Promise に変換されます。これらのチェックを自分で実行するよりも安全で簡単です。

本当に確かめる必要があるのでしょうか?

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

おすすめ記事