gpt4 book ai didi

javascript - 如何实现向 NaCl(Chrome Native Client)发送消息后的回调?

转载 作者:行者123 更新时间:2023-11-28 11:55:44 27 4
gpt4 key购买 nike

来自 NaCl 新手的简单问题...

在我的 javascript 中,我向 NaCl 模块发布一条消息。
NaCl 模块处理此消息后,如何在 javascript 中执行回调?

getting-started-tutorial ,给出以下示例。

 function moduleDidLoad() {
HelloTutorialModule = document.getElementById('hello_tutorial');
updateStatus('SUCCESS');
// Send a message to the Native Client module
HelloTutorialModule.postMessage('hello');
}

如何在 HelloTutorialModule.postMessage('hello'); 中执行回调函数?

谢谢。

最佳答案

没有直接的方法可以获取 NaCl 模块收到特定消息的回调。您可以自己手动执行此操作,但是可以传递 id,并将 id 映射到回调。

类似这样的东西(未经测试):

var idCallbackHash = {};
var nextId = 0;

function postMessageWithCallback(msg, callback) {
var id = nextId++;
idCallbackHash[id] = callback;
HelloTutorialModule.postMessage({id: id, msg: msg});
}

// Listen for messages from the NaCl module.
embedElement.addEventListener('message', function(event) {
var id = event.data.id;
var msg = event.data.msg;
var callback = idCallbackHash[id];
callback(msg);
delete idCallbackHash[id];
}, true);

然后在 NaCl 模块中:

  virtual void HandleMessage(const pp::Var& var) {
pp::VarDictionary dict_var(var);
pp::Var id = dict_var.Get("id");
pp::Var msg = dict_var.Get("msg");

// Do something with the message...

pp::VarDictionary response;
response.Set("id", id);
response.Set("msg", ...);
PostMessage(response);
}

关于javascript - 如何实现向 NaCl(Chrome Native Client)发送消息后的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com