我刚刚发现并开始使用Saxon-JS
在Peppol (Peppol.eu)消息上运行Schematron验证,它工作得很好!
我已经将所需的模式“预编译”成JSON (使用schxslt
和xslt3
),然后对数据执行SaxonJS.transform()
。
由于这些样式表相当大,因此需要一些时间,并且性能非常关键,因为它是通过API运行的。
我在Promise.all()
中运行这三个调用,并添加了计时器。从计时器中,我可以看到函数调用是并行进行的,但SaxonJS.transform()
的执行似乎是顺序的,即当第一个SaxonJS.transform()
返回时,下一个开始...
我尝试将threads
添加到代码中以使其在"workers“中运行,但我需要向该函数发送一个XMLDom对象,而threads
似乎不支持这一点……
在runTransform()
的两次执行之间有一些关于430ms
的内容,它们的名称类似于:
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)
]);
函数不应该并行运行(至少“多”并行)吗?
发布于 2021-08-09 08:13:38
这是runTransform()
函数中的另一个await
被“阻塞”,而不是最初认为的SaxonJS.transform()
……
注意那些承诺...:o
https://stackoverflow.com/questions/68257779
复制相似问题