Node.js C++ 使用 Nan.h 构建 JS 对象并调用回调函数
以下是使用 Nan.h 实现的代码:
#include <nan.h>
using namespace Nan;
// 创建一个js对象
Local<Object> createObject() {
Local<Object> obj = New<Object>();
// 设置对象属性
obj->Set(New<String>('x').ToLocalChecked(), New<Number>(1));
obj->Set(New<String>('y').ToLocalChecked(), New<Number>(2));
obj->Set(New<String>('type').ToLocalChecked(), New<Number>(3));
return obj;
}
// 调用传入的回调函数
void callCallback(const FunctionCallbackInfo<Value>& args) {
Nan::HandleScope scope;
// 获取回调函数
Local<Function> callback = Local<Function>::Cast(args[0]);
// 创建一个js对象
Local<Object> obj = createObject();
// 调用回调函数,传入js对象作为参数
Local<Value> argv[] = { obj };
callback->Call(1, argv);
}
// 导出模块
NAN_MODULE_INIT(Init) {
// 导出callCallback函数
Nan::Set(target, New<String>('callCallback').ToLocalChecked(),
GetFunction(New<FunctionTemplate>(callCallback)).ToLocalChecked());
}
NODE_MODULE(addon, Init)
在这个例子中,我们创建了一个名为createObject的函数,它将返回一个包含 {x: 1, y: 2, type: 3} 的js对象。然后,我们创建了一个名为callCallback的函数,它将获取传入的回调函数并调用它,将createObject函数返回的js对象作为参数传递给它。
最后,我们将callCallback函数导出为一个名为callCallback的模块方法,以便在Node.js中使用。
原文地址: https://www.cveoy.top/t/topic/os9x 著作权归作者所有。请勿转载和采集!