2017-03-29 2 views
0

Gibt es eine Möglichkeit in Node.js zu überprüfen, ob global.Promise die native Versprechen Implementierung ist? Im Gegensatz zu Bluebird verspricht, etc?Native Versprechungen vs. Bluebird verspricht

+1

Sie können das Gegenteil tun, indem Sie in der API tippen. Sagen Sie '.promisifyAll 'für Bluebird oder' .fapply' für Q, aber das hilft nicht bei der Erkennung von nativen. Ich bin nicht sicher, dass das Ersetzen von global.Promise eine gute Idee an erster Stelle ist. – Matt

+0

@Matt Ich ersetze global.Promise nicht, die Benutzer meiner Bibliothek tun es zwar, ich habe keine Kontrolle darüber, aber muss es erkennen. Ich stimme zu, dass das Ersetzen von global.Promise wahrscheinlich ein schlechter Zug ist. –

Antwort

2

Sie könnten einen Feature-Test und Test, um zu sehen, ob einer der Drossel erweiterten Funktionen sind vorhanden:

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; 
} 

Wie bei vielen Dingen in Javascript, sollten Sie wahrscheinlich testen, um nur zu sehen, ob die gewünschten Funktionen zu verwenden sind vorhanden, anstatt zu versuchen festzustellen, ob eine bestimmte Bibliothek geladen ist.

+0

danke, ich bin am meisten interessiert zu bestimmen, ob ein Versprechen nativ ist, nicht, wenn ein Versprechen Bluebird ist, aber das sollte für Bluebird funktionieren –

+0

@AlexanderMills - Welches Problem versuchen Sie wirklich zu lösen? Warum willst du wissen, ob es nativ ist? Es gibt sicherlich andere nicht-native Promise-Implementierungen neben Bluebird, so dass diese Rückgabe von 'false' nicht garantiert, dass Versprechungen nativ sind. – jfriend00

+0

Ich muss die native Promise-Implementierung patchen, aber ich möchte Promise nicht patchen, wenn sie nicht nativ ist. –