Qu'il s'agisse d'une promesse ES6 ou d'une promesse bluebird, d'une promesse Q, etc.
Comment puis-je tester pour voir si un objet donné est une promesse?
.thenméthode qui n'est pas une promesse, ne se comporte pas comme une promesse et n'avait aucune intention d'être utilisée comme une promesse. Vérification d'une .thenméthode vous indique juste que le si l' objet n'a pas avoir une .thenméthode, vous n'avez une promesse. L'inverse - que l'existence d'un moyen de la méthode que vous faites ont une promesse - n'est pas nécessairement vrai. .then
.thenméthode. Oui, cela a le potentiel de faux positifs, mais c'est l'hypothèse sur laquelle toutes les bibliothèques de promesses comptent (car c'est tout ce sur quoi elles peuvent compter). La seule alternative pour autant que je puisse voir est de prendre la suggestion de Benjamin Gruenbaum et de l'exécuter dans la suite de tests promesse. Mais ce n'est pas pratique pour le code de production réel.
.thenméthode, mais cela ne vous dirait pas que ce que vous avez est définitivement une promesse. Tout ce que vous savez à ce stade, c'est que vous avez quelque chose qui expose une.thenméthode, comme une promesse.