从 C++ 节点调用 JavaScript 函数.js扩展
calling javascript function from c++ node.js extension
我有一些javascript文件,我想在调用我的c ++函数期间调用此文件中定义的某个函数。请注意,我想按名称调用它,而不仅仅是作为参数传递的一些随机函数。
测试.js:
function someFunc()
{
// do something...
}
var my_module = require("my_native_module");
my_module.nativeFunc();
测试.cpp:
using namespace v8;
Handle< Value > nativeFunc(const Arguments & args)
{
HandleScope scope;
// I want to somehow get someFunc value from current context by name
Local< Value > function_value = Context::GetCurrent()->Global()->Get_By_Name(String::New("someFunc")); // this doesn't work
// probably check that function_value is really a function...
Local< Function > function_callable = Local< Function >::Cast(function_value);
function_callable->Call(Context::GetCurrent()->Global(), 0, nullptr);
return(scope.Close(Undefined()));
}
所有示例似乎都接受该函数作为参数(回调(,如下所示:
Local<Function> cb = Local<Function>::Cast(args[0]);
但是我需要按名称查找函数。
我没有准备好的快速示例来测试这一点,但是正在查看一些代码,这些代码暗示您应该能够执行以下操作:
Handle<String> process_name = String::NewFromUtf8(GetIsolate(), "Foo");
Handle<Value> process_val = context->Global()->Get(process_name);
if (!process_val->IsFunction()) return false;
Handle<Function> process_fun = Handle<Function>::Cast(process_val);
process_fun->Call(Context::GetCurrent()->Global(), 0, nullptr);
相关文章:
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 有没有类似的函数,比如 c++ 中的 JS Array.prototype.map?
- 从C++回调函数发出节点.js事件
- node.js Nan:在函数C++调用 JavaScript 回调
- 如果用户尝试从 JS 调用对象的未定义函数C++则回调C++代码
- 从 JS (V8) 中C++对象的引用调用函数
- 如何使用 cocos creator 在 Cocos2d-X/Cocos2d-JS 中调用 javascript 函数并
- 从不同的节点插件方法多次调用JS函数
- 从节点addon多次调用JS函数
- QML:将JS对象传递给C++成员函数
- C ++ tiny-js 从外部文件执行 JavaScript 函数
- 从C 插件中调用QML中的JS函数
- Node.js插件类成员函数
- 如何存储对函数的引用,以便稍后可以在节点.js C++插件模块中回调它
- 在v8中,使用cpp对象作为参数执行js函数
- 在node.js 0.12.x中使用libuv函数
- 在使用NAN的Node.js的C++模块中未调用SetAccessor函数
- 如何使用ffi将WinApi函数加载到Node.js中
- 从 C++ 节点调用 JavaScript 函数.js扩展
- 我应该包装一个完全包含在node.js函数中的C++对象吗