bounty将在3天后过期。回答此问题可获得+50声望奖励。Alex Shaw正在寻找标准答案:这与许多创建本机绑定的Node开发人员有关。
我需要一种方法从使用上下文的C库中调用JS回调。下面是一个例子:第一个这是可行的(运行JS回调),但问题是回调是全局的,如果我有ctx2并再次调用mylib_set_event_callback,它将覆盖来自ctx1的回调。我如何转换它,使ctx1和ctx2的回调都被调用?
ctx2
mylib_set_event_callback
ctx1
iqjalb3h1#
您的回调是全局的,因为它位于全局变量中。您应该将Napi::FunctionReference放在mylib_t结构中。如果你不能修改那个结构,我看到你可以在userdata中传递一个上下文指针--你正在传递nullptr。用new动态地创建一个Napi::FunctionReference,并传递这个指针,这样你就可以在onEvent中拥有它。当结构被破坏或函数被替换时,您还应该正确地引用。
Napi::FunctionReference
mylib_t
userdata
nullptr
new
onEvent
1条答案
按热度按时间iqjalb3h1#
您的回调是全局的,因为它位于全局变量中。
您应该将
Napi::FunctionReference
放在mylib_t
结构中。如果你不能修改那个结构,我看到你可以在
userdata
中传递一个上下文指针--你正在传递nullptr
。用new
动态地创建一个Napi::FunctionReference
,并传递这个指针,这样你就可以在onEvent
中拥有它。当结构被破坏或函数被替换时,您还应该正确地引用。