xml-parsing – Bluebird promise`promisifyAll`不工作 – 不能
发布时间:2020-12-16 07:43:54 所属栏目:百科 来源:网络整理
导读:我正在使用一个使用节点回调约定的节点模块.我想使用Bluebird承诺将此模块转换为API.我没有得到如何做到这一点. 下面是我的节点样式回调函数.我想将其转换成蓝鸟的可靠诺言. var module = require('module'); // for example xml2js,or Mongoosevar parseStr
我正在使用一个使用节点回调约定的节点模块.我想使用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; } }); 我尝试这样使用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); }); 我得到的不是功能错误.我该怎么解决?
当蓝鸟使用promisifyAll将模块(如xml2js)转换为基于promise的API时,它会为每个函数名称附加一个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); }); 当您调用parseString而没有异步后缀时,它调用原来的基于回调的函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |