-2

我想在 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
4

2 回答 2

1

load()方法是异步的。因此,最后的 console.log 将在加载完成之前发生。与其尝试将其视为过程逻辑(事实并非如此),不如在您拥有的成功方法中使用 IMLoginReq。

于 2016-12-20T02:56:36.993 回答
0

那是因为您试图在加载之前调用它。你应该有一个像成功这样的回调函数,所以它会在那里。你也可以通过省略回调来使用 Promise:

protobuf.load("awesome.proto")
    .then(function(root) {
       ...
    });
于 2016-12-20T02:57:16.343 回答