Ich verwende ein Knotenmodul, das die Node-Callback-Konvention verwendet. Ich möchte dieses Modul mit Bluebird-Versprechen in eine API konvertieren. Ich verstehe nicht, wie ich das machen soll.Bluebird Versprechen `promisifyAll` funktioniert nicht - kann Eigenschaft` `dann` nicht lesen
Unten ist meine Node-Stil Callback-Funktion. Ich möchte es in ein vernünftiges Versprechen von Bluebird verwandeln.
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;
}
});
Ich habe versucht, auf diese Weise PromisifyAll
verwenden, aber es funktioniert nicht:
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);
});
Ich then is not a function
Fehler bekommen. Wie kann ich es reparieren?
Ich verwendete promisifyAll mit Anforderung, und es erforderte mir nicht, das Async-Suffix hinzuzufügen. Gibt es einen besonderen Grund? – Antoine
@AnthonyMayfield Ich denke, Request-Modul ist standardmäßig mit Versprechen Konzepte gemacht. Ich habe es auf Anfrage benutzt, ohne es zu promoten –