0

我刚刚发现并开始使用Saxon-JS能够对 Peppol (Peppol.eu) 消息运行 Schematron 验证,而且效果很好!

我已经将所需的 Schemat“预编译”为 JSON(使用schxsltand xslt3),然后我正在SaxonJS.transform()对数据执行。

由于这些样式表相当大,因此需要一些时间,而且性能是关键,因为它是通过 API 运行的。

我在 a 中运行了三个调用Promise.all()并添加了计时器。从计时器我可以看到函数调用是并行发生的,但执行SaxonJS.transform()似乎是顺序的,即当第一个SaxonJS.transform()返回时,下一个开始......

我尝试添加threads代码以使其在“workers”中运行,但我需要向函数发送一个 XMLDom 对象并且threads不支持它似乎......

在此处输入图像描述

大约430ms在两次执行之间runTransform(),它们被称为:

let [xsdResult, valid, valid2] = await Promise.all([
  xsdValidation(event, xmlDoc),
  runTransform('EN16931-UBL-validation-preprocessed.sef.json', event, ves),
  runTransform('PEPPOL-EN16931-UBL.sef.json', event, ves)
]);

这些功能不应该并行运行(至少“更多”并行)吗?

4

1 回答 1

0

这是另一个“阻塞”await的功能runTransform(),而不是SaxonJS.transform()最初想象的......

记住那些承诺... :o

于 2021-08-09T08:13:38.317 回答