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?