protobuf.js: есть ли синхронный способ загрузки статического кода
Я пытаюсь синхронно загрузить статический код protobuf.js (сгенерированный с помощью pbjs).
Согласно документации, документированный метод является асинхронным.
Асинхронная загрузка выполняется так:
protobuf.load("bundle.json", function(err, root) {
...
});
Поскольку мой следующий код должен выполняться только после завершения загрузки, я считаю, что синхронная загрузка будет лучше.
Есть ли способ загрузить его синхронно или есть какой-нибудь твик, чтобы сделать это?
2 ответа
Решение
Protobuf.js имеет метод синхронной загрузки
Вы можете полностью достичь того, что вы хотите с асинхронной загрузкой. Просто добавьте свой дополнительный код в обратный вызов или не добавляйте обратный вызов и добавьте свой дополнительный код в метод.then возвращаемого Promise.
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)