napi_add_finalizer
napi_status napi_add_finalizer(napi_env env,
napi_value js_object,
void* finalize_data,
node_api_basic_finalize finalize_cb,
void* finalize_hint,
napi_ref* result); [in] env:调用该 API 时所处的环境。[in] js_object:要附加本地数据的 JavaScript 对象。[in] finalize_data:可选的数据,将传递给finalize_cb。[in] finalize_cb:本地回调,当 JavaScript 对象被垃圾回收时,将用于释放本地数据。napi_finalize提供了更多详细信息。[in] finalize_hint:可选的上下文提示,会传递给 finalize 回调。[out] result:可选的 JavaScript 对象引用。
如果 API 成功,则返回 napi_ok。
【Returns napi_ok if the API succeeded.】
添加一个 napi_finalize 回调,当 js_object 中的 JavaScript 对象被垃圾回收时,该回调将被调用。
【Adds a napi_finalize callback which will be called when the JavaScript object
in js_object has been garbage-collected.】
可以在单个 JavaScript 对象上多次调用此 API。
【This API can be called multiple times on a single JavaScript object.】
⚠️注意:可选返回的引用(如果获得)应仅在 finalize 回调调用时通过 napi_delete_reference 删除。如果在此之前删除,可能永远不会调用 finalize 回调。因此,在获取引用时,还需要一个 finalize 回调,以确保引用能够正确释放。
【Caution: The optional returned reference (if obtained) should be deleted via
napi_delete_reference ONLY in response to the finalize callback
invocation. If it is deleted before then, then the finalize callback may never
be invoked. Therefore, when obtaining a reference a finalize callback is also
required in order to enable correct disposal of the reference.】