为了账号安全,请及时绑定邮箱和手机立即绑定

Node.js 插件需要多次新实例

Node.js 插件需要多次新实例

慕码人8056858 2022-01-01 20:45:00
如何避免使用 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();


查看完整回答
反对 回复 2022-01-01
?
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()


查看完整回答
反对 回复 2022-01-01
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信