如何避免使用 require('c++addon') 进行缓存。我有一个插件,但每次都想有一个新的。例如for(...) addon[i] = require('addon'); // I want a new one everytime addon[i].somefunction(); // 谢谢你。
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
您将不得不重构您的插件模块,以便它公开一个函数来构造这些实例,例如
const myAddon = require('addon');
objects = [myAddon.create(), myAddon.create(), myAddon.create()];
objects[0].somefunction();
POPMUISE
TA贡献1765条经验 获得超5个赞
这是一个示例代码,用于创建本机对象的多个实例。 https://github.com/nodejs/node-addon-examples/blob/master/6_object_wrap/napi/myobject.cc
如果您正在处理 native 模块,那么 native 模块也必须编写一些额外的代码来创建一个新实例。除了创建新实例之外,本机模块还需要负责实例的生命周期管理。典型的 JavaScript 代码启动创建对象的方式有两种。一种是使用其构造函数,另一种是使用函数调用。负责创建新实例的本机模块也必须对这两者进行不同的处理。您可以通过参考有关以下内容的文档以及示例代码https://nodejs.org/api/n-api.html获得更多见解
生命周期管理:
napi_ref
napi_create_reference()检查是否是构造函数调用
napi_get_new_target()根据现有的本机对象(类型为 napi_value)来实例化新的 JavaScript 对象
napi_new_instance()
添加回答
举报
0/150
提交
取消