小编S.B*_*.B.的帖子

node.js Nan:在 C++ 函数中调用 JavaScript 回调

我正在为 C++ 库构建一个节点模块包装器,以通过Nan将日志信息传递给 JavaScript。为此,可以使用 NAN_Method 来注册回调。回调处理程序必须通过vlAddLogListener(). 的LoggingCallbackHandler在函数从库接收到一个消息dispatchEvent,一个C ++函数。如果我收到日志,我想调用 JavaScript 回调来传递数据。

该函数dispatchEvent不是在 Nan 上下文中调用的,因此我没有范围/上下文,也无法访问 v8。如何调用 JavaScript 回调?

代码如下所示:

NAN_METHOD(registerLoggingCallback) 
{
    v8::Isolate* isolate = info.GetIsolate();
    v8::Local<v8::Function> fun = info[0].As<v8::Function>();
    lch = new LoggingCallbackHandler(isolate, fun);
}

LoggingCallbackHandler::LoggingCallbackHandler(v8::Isolate* isolate, v8::Local<v8::Function> fun) :
    _cb(isolate, fun)
{
    vlAddLogListener(&LoggingCallbackHandler::dispatchEvent, this);
}

void VL_CALLINGCONVENTION LoggingCallbackHandler::dispatchEvent(const char* eventData, void* clientData)
{
    // here I want to process the data and call the JavaScript callback
    v8::Local<v8::Function> f = v8::Local<v8::Function>::New(Nan::GetCurrentContext()->Global()->GetIsolate(), _cb); …
Run Code Online (Sandbox Code Playgroud)

javascript c++ node.js node.js-nan node.js-addon

5
推荐指数
1
解决办法
2346
查看次数

标签 统计

c++ ×1

javascript ×1

node.js ×1

node.js-addon ×1

node.js-nan ×1