xml-parsing – Bluebird promise`promisifyAll`不工作 – 不能读取属性`then`

前端之家收集整理的这篇文章主要介绍了xml-parsing – Bluebird promise`promisifyAll`不工作 – 不能读取属性`then`前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用一个使用节点回调约定的节点模块.我想使用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而没有异步后缀时,它调用原来的基于回调的函数.

猜你在找的XML相关文章