C++ Firebreath事件确认

C++ Firebreath事件确认,c++,firebreath,C++,Firebreath,我已经创建了基于Firebreath框架的插件。实现事件以实现插件的正确功能 Firebreath事件从以下方法的JSAPIAuto.cpp类异步激发: void FB::JSAPIAuto::fireAsyncEvent(const std::string和eventName,const std::vector和args) 我也使用了相同的。但是我想在jsapiaauto.cpp中通过回调或其他方式触发同一事件时获得对该事件的确认。。 因此,我可以基于相同的结果处理PluginAPI.cpp中

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

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

void FB::JSAPIAuto::fireAsyncEvent(const std::string和eventName,const std::vector和args)

我也使用了相同的。但是我想在jsapiaauto.cpp中通过回调或其他方式触发同一事件时获得对该事件的确认。。 因此,我可以基于相同的结果处理PluginAPI.cpp中的下一个功能


任何帮助都将不胜感激

如果您阅读函数的文本,您将看到其中出现了“async”一词=]这表明,在FireBreath中触发这样的偶数也是异步的,不允许您以任何方式给它返回值。由于事件在某些浏览器上的实现方式,没有合理的方法来改变这一点

也就是说,您可以通过在
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 MyScriptingAPI::setCallback(const FB::JSObjectPtr&callback){
FB::variant res=callback->Invoke(“,FB::variant_list_of(“some”)(3)(“参数”);
return res.convert_cast();
}
这将调用回调函数,将结果强制转换为bool(true/false),并将结果返回到javascript。显然,如果返回了无法强制转换为bool的内容,则会抛出异常,但您应该了解一般情况