目前鸿蒙媒体框架相机部分,常见的异步方式共两种。
1. Promise
表现形式:func(): Promise<Object>
2. AsyncCallback
表现形式:func(callback: AsyncCallback<boolean>): void
两者的差异:通过参数中是否传递callback函数进行区分。
本文主讲cameraPicker中遇到的Promise异步方式。
Promise:
具体实现主要分为以下几个步骤:
一、数据解析与数据缓存
// CAMERA_NAPI_GET_JS_ARGS的作用,从 info 中读取 JS 传递过来的参数放入 argv中,本质是调用napi_get_cb_info
// 将获取的JS参数取出,同时创建一个异步线程需要的数据对象context,把传递过来的参数加入进去做下缓存