我正在尝试向自定义函数添加回调函数,以便我可以使用函数中建立的值。但是,目前我的回调函数中没有任何内容被调用 - 因此日志消息“添加protobuf消息”永远不会被调用,并且值永远不会被使用。我不确定我做错了什么。基本上我只想将其设置为同步运行,因为我需要函数中的值作为输出添加。
var protoMessage;
createProtobufMessage(function(){
logClient.trackTrace('The protomessage is' + protoMessage);
});
function createProtobufMessage() {
}
答案 0 :(得分:1)
您需要在createProtobufMessage
中声明一个参数才能接收回调。
然后,您可以像调用其他任何函数一样调用此参数。
答案 1 :(得分:0)
可以这样做:
var protoMessage;
createProtobufMessage(function(){
logClient.trackTrace('Adding the protobuf message');
logClient.trackTrace('The protomessage is' + protoMessage);
context.bindings.output = protoMessage;
context.done();
});
/**
* Create a protobuf message.
*/
function createProtobufMessage(callback) {
protobuf.load(GetEnvironmentVariable('ProtoBufFilePath'), function(error, root) {
if (error) {
logClient.trackException('An error occured when loading the protobuf file');
throw error;
}
logClient.trackTrace('Creating a new protobuf message');
// Obtain a message type
var messageType = root.lookup(GetEnvironmentVariable('ProtoBufMessageType'));
// Create a new message
var message = messageType.create({
header: {
protocolVersion: 1,
messageCreationTime: 2505,
eventId: 2505,
clientTimestamp: 1709,
}
});
// Encode a message (note that reflection encodes to a writer and we need to call finish)
var buffer = messageType.encode(message).finish();
var messageDec = messageType.decode(buffer);
protoMessage = JSON.stringify(messageDec);
logClient.trackTrace('A protobuf message has been successfully created' + protoMessage);
});
callback();
}