无法通过 Javascript 中的引用为变量赋值

Cannot assign value to variable by reference in Javascript

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

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

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

protobuf.load("awesome.proto")
    .then(function(root) {
       ...
    });