我已经创建了插件,这是基于火呼吸框架。实现事件,以实现插件的适当功能。
火呼吸事件是从以下方法的JSAPIAuto.cpp类异步触发的:
void FB::JSAPIAuto::fireAsyncEvent( const std::string& eventName, const std::vector<variant>& args )
我还使用了相同的.but,当同一事件通过回调或其他方式在JSAPIAuto.cpp中触发时,我希望得到它的确认。这样我就可以根据相同的结果在PluginAPI.cpp中处理我的下一个功能。
任何帮助都将不胜感激!
发布于 2014-01-28 22:20:34
如果您阅读该函数的文本,您将看到“异步”一词出现在它=]中,这表明,在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 (true/false),并将结果返回给javascript。显然,如果返回一些不能转换为bool的内容,则会抛出异常,但您应该了解一般的概念。
https://stackoverflow.com/questions/21406422
复制相似问题