如何从C++中调用一个JS回调函数?

nnsrf1az  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(263)

bounty将在3天后过期。回答此问题可获得+50声望奖励。Alex Shaw正在寻找标准答案:这与许多创建本机绑定的Node开发人员有关。

我需要一种方法从使用上下文的C库中调用JS回调。
下面是一个例子:
第一个
这是可行的(运行JS回调),但问题是回调是全局的,如果我有ctx2并再次调用mylib_set_event_callback,它将覆盖来自ctx1的回调。
我如何转换它,使ctx1ctx2的回调都被调用?

iqjalb3h

iqjalb3h1#

您的回调是全局的,因为它位于全局变量中。
您应该将Napi::FunctionReference放在mylib_t结构中。
如果你不能修改那个结构,我看到你可以在userdata中传递一个上下文指针--你正在传递nullptr。用new动态地创建一个Napi::FunctionReference,并传递这个指针,这样你就可以在onEvent中拥有它。
当结构被破坏或函数被替换时,您还应该正确地引用。

相关问题