Encontré una biblioteca existente que usa promesas, sin embargo, no usa bluebird. Las funciones de la biblioteca no vienen con todas las funciones adicionales que bluebird tiene como .map() o .tap() . ¿Cómo convierto una promesa "normal" o "no bluebird" en una bluebird, con todas las características adicionales que ofrece bluebird?
Intenté envolver la promesa existente en Promise.promisify y Promise.resolve y ninguno pareció funcionar.
Use Promise.resolve : tomará cualquier elemento, como una promesa de alguna otra implementación, y lo asimilará a una promesa de Bluebird.
Tenga en cuenta que el término "resolver" puede ser engañoso, no significa lo mismo que "cumplir" pero también puede seguir otra promesa y conformarse con su resultado.
Si desea convertir la promesa en una promesa de pájaro azul, no resuelva nada y devuelva la customPromise , entonces tendrá acceso a todos los métodos personalizados de pájaro azul en la cadena.
Promise.resolve().then(function(){ return customPromise() })O
Promise.resolve(customPromise())¡Utilice el método Promesa de Promise.method !
const Promise = require('bluebird'); const fn = async function() { return 'tapped!' }; bluebirdFn = Promise.method(fn); bluebirdFn().tap(console.log) // tapped! fn().tap(console.log) // error