-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 に答える