return 来自节点 cpp 插件调用的 javascript 函数的 js 对象
return a js object from a javascript function that is called from a node cpp addon
我很想创建一个 return 一个 javascript 函数对象,它来自一个从 c++ 节点插件调用的函数。对象正在创建,但未被函数 return 编辑。
创建名为 cursor 的对象的回调函数
var callback_fn = function(record){
var res = new cursor(records);//functionalities of res(created here are working here when tested inside callback_fn but its not getting returned)
return res;//not only object, nothing was getting returned.I even tried returning a dummy var.
}
调用 "callback_fn"(它在 args[1] 中)
的节点插件片段
//Isolate* isolate = Isolate::GetCurrent();
//HandleScope scope(isolate);
Local<Object> obj= Object::New(isolate);
obj->Set(String::NewFromUtf8(isolate,"name"),Integer::New(isolate,custnum));
obj->Set(String::NewFromUtf8(isolate,"address"),Integer::New(isolate,custnum));//integer is assigned to name and address just for testing.
obj->Set(String::NewFromUtf8(isolate,"custnum"),Integer::New(isolate,custnum));
Local<Function> cb = Local<Function>::Cast(args[1]);
Local<Value> argv[1] = {obj};
cb->Call(isolate->GetCurrentContext()->Global(), 1, argv);
代码中的错误是 javascript 函数 "callback_fn" 正在 return 将对象发送到 cpp 插件。所以,我们需要将它存储在 cpp 插件中,return 它要实现一个回调。
ret_val = cb->Call(isolate->GetCurrentContext()->Global(), 1, argv);
//where ret_val is defined as Local<value> ret_val;
args.GetReturnValue().Set(ret_val);
在 javscript 中可以存储和 return编辑。
var res_final=addon.addonfunction(input to addon);
return res_final;
如果编写的 cpp 插件不是异步的,我们可以将 res 存储在节点程序中的一个单独的 var 中,并 return 在 addon.addonfunction(插件的输入)完成执行后(因为在同步程序中一切都按顺序进行)。
我很想创建一个 return 一个 javascript 函数对象,它来自一个从 c++ 节点插件调用的函数。对象正在创建,但未被函数 return 编辑。
创建名为 cursor 的对象的回调函数
var callback_fn = function(record){
var res = new cursor(records);//functionalities of res(created here are working here when tested inside callback_fn but its not getting returned)
return res;//not only object, nothing was getting returned.I even tried returning a dummy var.
}
调用 "callback_fn"(它在 args[1] 中)
的节点插件片段//Isolate* isolate = Isolate::GetCurrent();
//HandleScope scope(isolate);
Local<Object> obj= Object::New(isolate);
obj->Set(String::NewFromUtf8(isolate,"name"),Integer::New(isolate,custnum));
obj->Set(String::NewFromUtf8(isolate,"address"),Integer::New(isolate,custnum));//integer is assigned to name and address just for testing.
obj->Set(String::NewFromUtf8(isolate,"custnum"),Integer::New(isolate,custnum));
Local<Function> cb = Local<Function>::Cast(args[1]);
Local<Value> argv[1] = {obj};
cb->Call(isolate->GetCurrentContext()->Global(), 1, argv);
代码中的错误是 javascript 函数 "callback_fn" 正在 return 将对象发送到 cpp 插件。所以,我们需要将它存储在 cpp 插件中,return 它要实现一个回调。
ret_val = cb->Call(isolate->GetCurrentContext()->Global(), 1, argv);
//where ret_val is defined as Local<value> ret_val;
args.GetReturnValue().Set(ret_val);
在 javscript 中可以存储和 return编辑。
var res_final=addon.addonfunction(input to addon);
return res_final;
如果编写的 cpp 插件不是异步的,我们可以将 res 存储在节点程序中的一个单独的 var 中,并 return 在 addon.addonfunction(插件的输入)完成执行后(因为在同步程序中一切都按顺序进行)。