为什么 MathJax 被设计为异步工作(仅)/如何同步使用 MathJax?

exp*_*sic 5 mathjax

我想编写一个函数,将一串 TeX 方程转换为 DOM ( <span>) 对象,但这似乎几乎不可能,因为与渲染相关的 MathJax 接口的大部分(如果不是全部)都是异步的。我想问一下:

  1. 异步的原因是什么?

  2. 有什么方法可以管理必须异步的部分并同步使用其余部分,这可能会使库编写者的生活轻松一百倍吗?

    2.1. 我发现这MathJax.InputJax.prototype.Process可能是同步的,但它需要一个未记录的“状态”参数,用于“内部使用”。既然它列在 API 中,我认为使用它是有意义的,那么如何使用呢?

我知道它在文档中说:

加载文件、加载基于 Web 的字体和创建样式表等操作都在浏览器中异步发生......

但这些任务似乎与排版无关,应该是同步的。

谢谢。