reject parallel new create all xml-parsing callback promise bluebird node-modules

xml-parsing - parallel - promise require('' bluebird '')



La promesa de Bluebird `promisifyAll` no funciona-no se puede leer la propiedad` then` (1)

Cuando bluebird convierte un módulo (como xml2js) en una API basada en promesa utilizando promisifyAll , agrega un sufijo Async a cada nombre de función y agrega esa función a ese objeto:

var xml2js = Promise.promisifyAll(require(''xml2js'')); // example: xml2js xml2js.parseStringAsync(xml) // NOTE THE ASYNC SUFFIX .then(function (result) { console.log("result = " + JSON.stringify(result)); }) .catch(function (err) { console.err(err); });

Cuando llama a parseString sin el sufijo asincrónico, llama a la función original de devolución de llamada.

Estoy usando un módulo de nodo que usa la convención de devolución de llamada del nodo. Quiero convertir este módulo en una API utilizando las promesas de Bluebird. No entiendo cómo hacer esto.

Debajo está mi función de devolución de llamada de estilo de nodo. Quiero convertirlo en la prometedora promesa de bluebird.

var module = require(''module''); // for example xml2js, or Mongoose var parseString = xml2js.parseString; parseString(xml, function (err, result) { // the regular API if (err) { console.log("Error in generation json from xml"); } else { return result; } });

Intenté de esta manera usar PromisifyAll pero no está funcionando:

var module = Promise.promisifyAll(require(''module'')); // for example xml2js xml2js.parseString(xml) .then(function (result) { console.log("result = ", result); }) .catch(function (err) { console.err(err); });

Me estoy poniendo then is not a function error de then is not a function . ¿Cómo puedo arreglarlo?