我刚刚发现并开始使用Saxon-JS
能够对 Peppol (Peppol.eu) 消息运行 Schematron 验证,而且效果很好!
我已经将所需的 Schemat“预编译”为 JSON(使用schxslt
and 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)
]);
这些功能不应该并行运行(至少“更多”并行)吗?