Yog*_*ani 12 callback xml-parsing promise node-modules bluebird
我正在使用一个使用节点回调约定的节点模块.我想使用Bluebird承诺将此模块转换为API.我没有得到如何做到这一点.
下面是我的节点样式回调函数.我想将它转换成蓝鸟的可靠承诺.
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;
}
});
Run Code Online (Sandbox Code Playgroud)
我试过这种方式,PromisifyAll但它不起作用:
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);
});
Run Code Online (Sandbox Code Playgroud)
我收到了then is not a function错误.我该如何解决?
Yog*_*ani 17
当bluebird将模块(如xml2js)转换为基于promise的API时,promisifyAll它会Async为每个函数名称附加一个后缀,并将该函数添加到该对象中:
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);
});
Run Code Online (Sandbox Code Playgroud)
当您在parseString没有async后缀的情况下调用时,它会调用原始的基于回调的函数.
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |