-1

编辑:显然不清楚,我想我会让它更简洁。

构建节点应用程序,使用本机插件。我需要通过 node-addon-api 将此项目中的 Javascript 函数传递到我的 C++ 插件中。然后,我需要能够从 C++ 多次调用该函数。当我发现由于 napi_env(调用函数所需的)受到缓存保护而无法保存对 Javascript 函数的引用时,问题就出现了。

在互联网上找不到有关如何执行此操作的任何明确答案或示例,正在寻找提示。

原来的:

正如标题所描述的,我需要想办法在我的插件中多次调用 JS 函数。通用用例是我的插件执行一些长时间运行的命令,并且需要定期将状态更新推送回 javascript。

我认为最好的方法是让用户传入一个函数(它只是附加到一个文本块)让我的插件调用(这样它就可以编写更新),这样 javascript 端可以决定它在哪里显示。

我已经尝试过让这个工作。发现我将函数保存在持久 napi_value 中的原始方法不起作用,因为您也无法保存 napi_env。

我找到了这个线程,我认为它最接近我需要的东西,但我无法将 Nan 翻译成 napi_ 所以它可以与我正在使用的东西一起使用。来自多线程 C++ 插件的回调 NodeJS Javascript 函数

还尝试传入 EventEmitter,但问题与上述类似。

如果我朝着正确的方向前进,任何人都可以给出一些指示吗?也许帮我找出一些关于如何实现这一目标的例子?

4

1 回答 1

0

你的问题不清楚。假设您在 Node 中使用 Javascript,请查看FFI,它允许使用 Javascript 加载和调用动态库。

或者,可以从命令行执行如下功能:

/usr/bin/node yourjsfunctionfilehere.js

您还可以将命令行参数传递给被调用的 JS 函数。

于 2019-03-14T00:49:31.920 回答