JSCallback 包装 ArkTS 函数,使其可作为 C 函数指针使用。
基本用法
闭包捕获
线程安全
可能从不同线程调用时设置threadsafe: true:
线程安全与 C 函数指针
threadsafe: true 时,cb.ptr 返回一个真实的 C 函数指针(蹦床地址),可直接传给原生 C 代码:
JSCallback 创建时通过 napi_create_threadsafe_function 创建 TSFN,同时分配 16 个预编译的本机蹦床函数,每个槽位对应一个独立函数地址。cb.ptr 通过 getCallbackPtr 返回该地址,原生 C 代码调用该地址时会先通过 TrampolineDispatcher 同步调用 ArkTS 回调并返回结果。
清理
始终调用close() 释放资源: