- 博客(14)
- 收藏
- 关注
原创 OpenHarmony Native开发指导
https://blog.csdn.net/hens_hello_mr/category_12485088.htmlhttps://blog.csdn.net/hens_hello_mr/category_12483368.html
2023-10-30 17:51:10 157
原创 scope管理N-API对象
N-API 调用时底层 VM 的堆中对象会返回 napi_value 句柄。函数代码运行时,这些句柄对象一直保持活跃;待函数结束时,才会被 GC 回收。N-API 对象的生命周期管理本质上是控制对象什么时机被销毁。主要通过添加作用域和 create reference 方式。
2023-10-28 18:26:13 315
原创 promise实例在C++和JS之间的传递
1、接收 从 JS 侧传来的函数参数。2、调用函数,得到返回值,一个 promise 实例。3、获取 promise 实例的 then、catch 属性方法,并使用相应的函数参数进行调用。调用 handlePromise,传入返回值是 promise 实例的函数。
2023-10-28 18:21:38 221
原创 对象包装object-wrap
..// 调用napi_create_double方法把 C++类型转换成 napi_value 类型// 返回 napi_value 类型return sum;但是对于一些复杂的数据类型(如我们常用C++的类对象),是不能直接返回一个napi_value数据的。这时我们需要对这些数据进行一系列操作后将其导出,这样JS才能使用导出后的对象。// JS侧对C++侧的类进行实例化// 调用类的实例对象上的操作方法。
2023-10-28 17:52:54 450 1
原创 LibUV介绍
应用在 native 层有个下载任务,在非 JS 线程里,进程执行期间需要将下载进度传到前端( JS 侧),并使用进度数据绘制进度条。
2023-10-28 17:38:44 119
原创 JS调用C++模块中的函数
此API允许从C++侧调用 JavaScript 函数对象,例如本文的napi_call_function(env, global, cb, 0 , nullptr, &result);值得注意的是,本文JS侧传递给C++的回调函数是匿名函数,C++侧先将JS回调函数先在C++侧注册,即使用napi_create_reference将JS函数创建为ref,ref最终会作为napi_call_function的第三个参数,可以放心并没有在global对象里面直接去取函数引用。例如Add方法的代码,
2023-10-28 17:31:02 1714 1
原创 error的用法
C++ 侧 napi_call_function 调用 JS 函数,JS 引擎抛错,napi_get_and_clear_last_exception 用于获取和清除异常。成功时,抛出的结果是 JavaScript Object。接下来三种途径处理异常。C++ 侧使用 napi_create_error 创建 error,napi_throw 把 error 抛给 JS,JS 侧,try、catch 捕获处理。
2023-10-28 17:22:20 201
原创 napi_threadsafe_function 和 napi_async_work对比分析
从用法和官方介绍角度来看,napi_threadsafe_function 和 napi_async_work 似乎是两个完全不相同的两个东西,但从源码分析他们实现的原理,是有很大重合度。以至于使用场景亦有重合的地方。读前须知uv_async_send、uv_async_init、uv_queue_work 具体用法和作用。napi_async_work 系列 API 具体用法和作用。线程安全函数 API 具体用法和作用。
2023-10-28 17:02:38 774
原创 三方库迁移至 OpenHarmony 应用
三方库是指其他公司或者组织提供的服务或模块,例如常见的开源 OpenCV、libcurl 库,将三方库迁移至OpenHarmony 上,有助于系统的生态建设。本文首先以三方库为例,分别给出 Windows 和 Linux 开发环境下,curl 移植到 OpenHarmony 上的流程示意。主要涉及三部分内容,分别为编译环境的准备、编译工具的使用以及生成文件的调用。然后以库为例,介绍非camke编译时,如何配置环境变量,并使用make进行编译构建。
2023-10-28 15:41:37 1002
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人