gpt4 book ai didi

c++ - Firebreath 事件确认

转载 作者:行者123 更新时间:2023-11-28 07:08:29 25 4
gpt4 key购买 nike

我已经创建了基于 Firebreath 框架的插件。实现事件以实现插件的正确功能。

Firebreath 事件从以下方法的 JSAPIAuto.cpp 类异步触发:

void FB::JSAPIAuto::fireAsyncEvent( const std::string& eventName, const std::vector<variant>& args )

我也使用了相同的。但我想在 JSAPIAuto.cpp 中通过一些回调或任何方式触发同一事件时获得对同一事件的确认。这样我就可以根据相同的结果在 PluginAPI.cpp 中处理我的下一个功能。

任何帮助将不胜感激!!!

最佳答案

如果您阅读该函数的文本,您会看到其中出现“异步”一词 =] 正如这所暗示的那样,在 FireBreath 中触发这样的 even 是异步的,并且不允许您返回它任何方式的值(value)。由于事件在某些浏览器上的实现方式,没有合理的方法来改变它。

就是说,您可以通过将一个函数传递给 FB::JSObjectPtr 来存储并用作回调来做您自己的事情;如果您使用 Invoke"" 作为方法名称调用该回调,它将调用 javascript 函数并返回值,如下所示:

bool MyScriptingAPI::setCallback(const FB::JSObjectPtr& callback) {
FB::variant res = callback->Invoke("", FB::variant_list_of("some")(3)("arguments"));
return res.convert_cast<bool>();
}

这将调用您的回调,将结果转换为 bool (true/false) 并将结果返回给 javascript。显然,如果返回不能转换为 bool 的内容,则会抛出异常,但您应该了解总体思路。

关于c++ - Firebreath 事件确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406422/

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