javascript - 从 C++ Node.js 插件调用现有 JavaScript 函数 - 从另一个线程
问题描述
也许我只是没有搜索正确的术语,但我被困住了..
我需要从 C++ 调用 JavaScript 函数,这与使用普通 C API可以完成的非常相似。
注意:我不想将回调传递给 C++ 代码,但我已经知道要调用的函数的名称!
例如,我在 JavaScript 中有一个这样的函数:
function log_message_callback(context, message) {
console.log(`${context}: ${message}`);
}
my_napi_module.initialize(); // <-- starts thread that would call log_message_callback
我想从 C++ 调用它(顺便说一句,来自与主线程不同的线程):
#include <napi.h>
void log_message_callback(char const* message) {
// magic Napi code which would call log_message_callback in JavaScript
}
void some_thread_fn() {
log_message_callback("hello world");
}
我可以这样做吗?我该怎么做?我应该一直在寻找什么?!
解决方案
JavaScript 函数通常只能从本机插件的主线程调用。您可以从
napi_call_function ()可用于从本机层调用 JavaScript 函数。该文档也有一个代码片段用于它的使用。 https://nodejs.org/dist/latest-v11.x/docs/api/n-api.html#n_api_napi_call_function
推荐阅读
- javascript - 如何使用谷歌地图为每个多边形指定唯一的颜色?
- marklogic - 在 MarkLogic 中使用 xdmp:http 功能进行会话管理?
- sql - 连接两个表和一个表的两个结果
- php - 无法从自定义帖子类型帖子中获取 ACF
- android - 如何通过 adb 获取 webview 控制台日志?
- python - 无法将对象附加到实例变量(列表)
- rust - 为什么在调用结构的函数时会出现“使用未声明的类型或模块”错误?
- java - 是否可以从 close 方法返回 javaFX 中的变量?有没有更有效的方法来做到这一点?
- linux - 如何在 linux 和 windows 之间使用 git repo
- swift - 从 Firebase Firestore 获取当前用户的价值 - Swift 4