【问题标题】:Calling JS function multiple times from node addon从节点插件多次调用JS函数
【发布时间】:2019-03-14 00:13:12
【问题描述】:

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

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,但问题与上述类似。

如果我朝着正确的方向前进,谁能给出一些指示?或许能帮我找出几个例子来说明如何做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

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

    /usr/bin/node yourjsfunctionfilehere.js
    

    你也可以pass command line parameters到被调用的JS函数。

    【讨论】:

    • 你看过child processes它可以用来在不同进程之间发送消息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多