从节点插件多次调用JS函数

时间:2019-03-14 00:13:13

标签: javascript c++ node-addon-api

编辑:显然还不清楚,我想我会使其更加简洁。

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

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

原文:

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

我认为最好的方法是让用户传入一个函数(该函数只是追加到文本块中)供我的插件调用(以便它可以编写更新),这样javascript端可以决定它的位置被显示。

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

我找到了这个线程,我认为它与我需要的线程最接近,但是我无法将Nan转换为napi_,因此它可以与我使用的线程一起使用。 Callback NodeJS Javascript function from multithreaded C++ addon

也尝试传递EventEmitter,但与上面类似的问题。

如果我朝着正确的方向前进,谁能指出一些建议?也许可以帮助我找到一些有关如何完成此操作的示例?

1 个答案:

答案 0 :(得分:0)

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

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

/usr/bin/node yourjsfunctionfilehere.js

您还可以pass command line parameters到被调用的JS函数。