Używam modułu węzła, który używa konwencji wywołania zwrotnego węzła. Chcę przekonwertować ten moduł na API za pomocą obietnic Bluebird. Nie rozumiem, jak to zrobić.Obietnica Bluebird `promisifyAll` nie działa - nie można odczytać właściwości` then`
Poniżej znajduje się funkcja wywołania zwrotnego w stylu węzła. Chcę go przekonwertować na obiecującą gwarancję Bluebirda.
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;
}
});
Próbowałem w ten sposób przy użyciu PromisifyAll
ale to nie działa:
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);
});
Dostaję then is not a function
błędów. Jak mogę to naprawić?
Używałem promisifyAll z prośbą i nie wymagało to dodania sufiksu Async. Czy jest jakiś szczególny powód? – Antoine
@AnthonyMayfield Myślę, że moduł żądania jest domyślnie wykonany przy użyciu koncepcji obietnicy. Użyłem. Then na żądanie, nie obiecując go –