问题现象
- 通过这个API执行的abc文件运行在哪个JS上下文,是否可以与主线程进行交互?
- 每次执行napi_run_script_path时都会新建一个 JS 上下文。执行完成后,该上下文会被释放,不会一直存在。
- napi_run_script_path接口的使用方法如下:
解决措施
-
通过napi_run_script_path接口传入特定的环境(env),abc文件将在对应的线程中运行。如果在worker中执行,可以使用worker与主线程的通信机制与主线程进行交互。
-
其生命周期与其他文件相同,由VM管理,开发者无需感知。
-
napi_run_script_path接口接受三个参数:env、待执行的单个JS文件编译成的ABC文件的沙箱路径,以及一个返回值。针对包内abc文件接口路径说明:
目前仅接受rawfile文件夹下的abc文件。napi_run_script_path接口会直接拼接当前HAP所在的沙箱路径/data/storage/el1/bundle/。例如,传入路径为entry/resources/rawfile/main.abc,则处理后的沙箱路径为/data/storage/el1/bundle/entry/resources/rawfile/main.abc。