2017-03-29 22 views
0

global.Promiseが本来の約束の実装であるかどうかを確認する方法はNode.jsにありますか?ブルーバードの約束などとは対照的に?ネイティブの約束とブルーバードの約束

+1

あなたは、APIでダックタイピングをすることで、その逆を行うことができます。 Bluebirdの場合は '.promisifyAll'と言ってください.Qの場合は' .fapply'と言ってください。しかしネイティブの検出には役立ちません。私はglobal.Promiseを置き換えることが最初に良いアイデアであるかどうかはわかりません。 – Matt

+0

@Matt私はglobal.Promiseを置き換えていません。私の図書館のユーザーはそれを行うかもしれませんが、私はそれを制御することはできませんが、それを検出する必要があります。私はglobal.Promiseを置き換えることはおそらく悪い動きであることに同意します。 –

答えて

2

ブルーバード拡張機能のいずれかが存在するかどうかを確認する機能テストやテストを行うことができ:

function testBluebird() { 
    // test to see if a representative sample of Bluebird-specific features are present 
    return Promise && Promise.join && Promise.try && Promise.method && Promise.map; 
} 

JavaScriptで多くのものと同じように、あなたはおそらく機能は、あなたがしたいかどうかを確認するためにテストする必要があります特定のライブラリがロードされているかどうかを判断するのではなく、使用することができます。

+0

おかげさまで、私は約束がネイティブかどうかを決定することに最大の関心を持っています。約束がブルーバードの場合ではなく、ブルーバードの場合には役に立ちます。 –

+0

@AlexanderMills - あなたは本当に解決しようとしていますか?なぜあなたはそれがネイティブかどうかを知りたいですか? Bluebird以外の他の非本物のPromise実装は確かに存在します。したがって、このfalseを返すことは、その約束がネイティブであることを保証するものではありません。 – jfriend00

+0

ネイティブPromiseの実装にパッチを当てる必要がありますが、ネイティブでない場合はPromiseにパッチを当てたくありません。 –