【问题标题】:protobuf.js: Is there a synchronous way of loading static codeprotobuf.js:是否有同步加载静态代码的方式
【发布时间】:2021-09-02 14:44:07
【问题描述】:

我正在尝试同步加载 protobuf.js 静态代码(使用 pbjs 生成)。

根据documentation,记录的方法是异步的。

异步加载是这样完成的:

protobuf.load("bundle.json", function(err, root) {
    ...
});

由于我的进一步代码只能在加载完成后执行,我相信同步加载会更好。

有什么方法可以同步加载,或者有什么调整可以完成吗?

【问题讨论】:

  • 异步并不意味着你不能让你的代码在加载后执行...
  • 我假设您的意思是在回调中继续我的代码,因为它需要加载 protobuf?
  • 是的,没错,这就是异步的工作原理。
  • 这不是不推荐的方法吗?

标签: javascript protocol-buffers protobuf.js


【解决方案1】:

Protobuf.js 有一个synchronous loading method

您可以通过异步加载完全实现您想要的。 只需将您进一步的代码放入回调中,或者不添加回调并将您的进一步代码添加到返回的 Promise 的 .then 方法中。

【讨论】:

  • 链接已失效 :(
【解决方案2】:

protobuf.js 可以与loadSync 同步加载。跟随示例代码

const protoPath = __dirname + "/proto"

const files = (fs.readdirSync(protoPath))
  .filter(file => file.split('.').pop() === 'proto')

const root: protobuf.Root = protobuf.loadSync(files)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多