我想在ProtoBuf加载函数中为变量IMLoginReq赋值,但它不起作用,有人可以帮忙吗?
var IMLoginReq;
protobuf.load("./pb/IM.Login.proto", (err, root) => {
// Obtain a message type
IMLoginReq = root.lookup("IM.Login.IMLoginReq");
console.log(IMLoginReq);//<== is not undefined
});
console.log(IMLoginReq);//<== is undefined
答案 0 :(得分:1)
load()
方法是异步的。因此,最终的console.log将在加载完成之前发生。你应该在成功方法中使用IMLoginReq而不是试图将其视为程序逻辑,而不是将其作为程序逻辑处理。
答案 1 :(得分:0)
那是因为你试图在它加载之前调用它。你应该有一个像成功的回调函数,所以它会在那里。 你也可以通过省略回调来使用promises:
protobuf.load("awesome.proto")
.then(function(root) {
...
});