从节点addon多次调用JS函数

Calling JS function multiple times from node addon

本文关键字:调用 JS 函数 节点 addon      更新时间:2023-10-16

编辑:显然还不清楚,猜猜我会更简洁。

节点应用程序是构建的,使用本机插件。我需要通过Node-Addon-API从该项目传递JavaScript函数,进入我的C 插件。然后,我需要能够多次从C 调用该函数。当我发现我无法保存对JavaScript函数的引用时,由于NAPI_ENV(调用该功能所必需的)被保护不受缓存而出现问题。

在Internet上找不到有关如何执行此操作的明确答案或示例,寻找技巧。

原始:

正如标题所描述的那样,我需要找出一种在我的插件中多次调用JS函数的方法。通用用例是我的插件执行一些长期运行的命令,并且需要定期将状态更新重新推回JavaScript。

我认为最好的方法是让用户通过一个函数(仅附加到文本块)来调用插件(以便它可以编写更新)显示。

我已经实验了以实现此功能。发现我在持久的napi_value中保存该功能的原始方法无法使用,因为您也无法保存napi_env。

我找到了这个线程,我认为这是最接近我需要的线程,但是我无法将NAN转换为NAPI_,因此它可以与我使用的内容一起使用。来自多线程C addon

的回调nodejs javascript函数

也尝试通过EventEmitter传递,但类似于上述问题。

有人可以朝着正确的方向前进吗?也许可以帮助我挖掘有关如何完成此操作的一些示例?

您的问题尚不清楚。假设您在节点中使用JavaScript,请查看FFI,该FFI允许使用JavaScript加载和调用动态库。

另外,只需从命令行中执行一个函数:

/usr/bin/node yourjsfunctionfilehere.js

您也可以将命令行参数传递到称为JS函数。