Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 本机存储节点加载项事件以供以后回调_Node.js_Node Addon Api - Fatal编程技术网

Node.js 本机存储节点加载项事件以供以后回调

Node.js 本机存储节点加载项事件以供以后回调,node.js,node-addon-api,Node.js,Node Addon Api,我在javascript中创建了两个事件,我可以通过节点插件api成功调用它们。但我只能在调用插件函数后立即使用它们。有没有办法保存函数指针供以后使用 const emitter=new EventEmitter() 发射器.on('onCardInserted',()=>{ console.log('已添加卡') }) 发射器.on('onCardRemoved',()=>{ console.log('卡已删除') }) addon.Node_CardList_AddCardStatusNot

我在javascript中创建了两个事件,我可以通过节点插件api成功调用它们。但我只能在调用插件函数后立即使用它们。有没有办法保存函数指针供以后使用

const emitter=new EventEmitter()
发射器.on('onCardInserted',()=>{
console.log('已添加卡')
})
发射器.on('onCardRemoved',()=>{
console.log('卡已删除')
})
addon.Node_CardList_AddCardStatusNotifier(emitter.emit.bind(emitter));
Napi::布尔节点\u CardList\u AddCardStatusNotifier(const Napi::CallbackInfo&info){
Napi::Env Env=info.Env();
Napi::函数emit=info[0].As();
//如何在此处存储函数和env以供以后使用
std::make_tuple(&env,&emit)//这不起作用
}

您可以创建一个持久函数引用,如下所示:

ref = Napi::Persistent(emit);
其中ref的类型为在函数外部声明的Napi::FunctionReference。 这将防止在函数返回且超出范围时对其进行垃圾收集

看一看细节

ref = Napi::Persistent(emit);