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

时间:2016-12-20 02:54:01

标签: javascript protocol-buffers protobuf.js

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

2 个答案:

答案 0 :(得分:1)

load()方法是异步的。因此,最终的console.log将在加载完成之前发生。你应该在成功方法中使用IMLoginReq而不是试图将其视为程序逻辑,而不是将其作为程序逻辑处理。

答案 1 :(得分:0)

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

protobuf.load("awesome.proto")
    .then(function(root) {
       ...
    });
相关问题