Javascript xml2js保证是同步的吗?它会抛出错误吗?

Javascript xml2js保证是同步的吗?它会抛出错误吗?,javascript,node.js,error-handling,xml2js,Javascript,Node.js,Error Handling,Xml2js,我使用的是xml2js,我需要健壮,因为不能保证xml的源是格式良好的。因此,我需要确保所有错误都能够得到处理。如果代码如下所示: let parseString = require('xml2js').parseString; let xml = getTheXml(...); parseString(xml, (err, result) => { if (err) { handleError(err) } else { handleResult(result); } }

我使用的是xml2js,我需要健壮,因为不能保证xml的源是格式良好的。因此,我需要确保所有错误都能够得到处理。如果代码如下所示:

let parseString = require('xml2js').parseString;
let xml = getTheXml(...);
parseString(xml, (err, result) => {
    if (err) { handleError(err) }
    else { handleResult(result); }
});
我是否保证
parseString
不会抛出错误,并且所有错误都作为
err
对象传递给回调

或者为了更安全,我是否需要执行以下操作:

let parseString = require('xml2js').parseString;
let xml = getTheXml(...);
try {
  parseString(xml, (err, result) => {
    if (err) { handleError(err) }
    else { handleResult(result); }
  });
} catch (err) { handleError(err); }

此外,我是否可以保证
parseString
同步执行?

当执行错误第一次回调设计时,预期的行为是它不同步,并且任何错误都作为第一个参数传递


“保证”。。我不是该模块的作者或贡献者,因此我不能对此发表任何意见。如果需要确保,请编写一个测试。

我已经编写了一个测试,但该测试只确保它所采用的路径是同步的。它不测试通过该方法的其他路径是否同步。它也没有测试包的未来版本是否保持同步。我希望对包的API合同有一个澄清,这是只有包开发人员才能回答的问题。您应该在
package.json
中指定版本,以保护您的应用程序不受3:d第三方库破坏性更改的影响。公平点。我也这么做,但了解API背后的合同会让我在升级时更加自信。我已经检查了代码,我确信解析方法不会抛出错误。我想我需要假设库将使用标准节点回调。@AndrewEisenberg或通过github联系他们;)