Che si tratti di una promessa ES6 o di una promessa bluebird, una promessa Q, ecc.
Come posso verificare se un determinato oggetto è una promessa?
.then
metodo che non è una Promessa, non si comporta come una Promessa e non aveva intenzione di essere usato come una Promessa. Il controllo di un .then
metodo ti dice solo che l'oggetto if non ha un .then
metodo, quindi non hai una Promessa. L'inverso - che l'esistenza di un .then
mezzo metodo che si fa hanno una promessa - non è necessariamente vero.
.then
metodo. Sì, questo ha il potenziale per falsi positivi, ma è il presupposto che tutte le biblioteche promesse facciano affidamento (perché è tutto ciò su cui possono contare). L'unica alternativa per quanto posso vedere è prendere il suggerimento di Benjamin Gruenbaum ed eseguirlo attraverso la suite di test promettenti. Ma questo non è pratico per il vero codice di produzione.
.then
metodo, ma ciò non ti direbbe che ciò che hai è una Promessa definitivamente. Tutto quello che sapresti a quel punto è che hai qualcosa che espone un.then
metodo, come una Promessa.