2017-03-29 138 views
0

Node.js有沒有辦法檢查以確定global.Promise是否是本機承諾實現?與藍鳥承諾相反,等等?Native承諾與藍鳥承諾

+1

你可以通過在鴨子上輸入API來完成相反的操作。對於藍鳥來說'.promisifyAll'或'.fapply'來代表Q,但是這並不能幫助檢測原生。我不確定取代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。 –