关于鸿蒙napi的异步机制的疑问,执行逻辑是跑在js线程上吗?

各位大佬,

据我理解,js作为一个单线程的语言,高耗时的操作一般都是要异步执行的。鸿蒙的js接口大部分也都是异步的,会带上一个callback的参数。

那么对于callback这种异步模式,底层C++会创建一个aysync work 然后将执行逻辑(耗时部分)和函数执行完成后的逻辑全部都封装进去。然后丢到uv_loop中。

最终调用引擎的loop接口,执行这个work。

我的问题就是,最终执行逻辑是跑在JS runtime线程上吗?如果是,那么假设这部分执行逻辑很复杂,很耗时,不会阻塞JS的runtime吗?

按我理解不是应该仅仅将callback的逻辑封装成async的work推到loop中,而执行逻辑交给底层新创建的线程不是更好吗?

(以上问题是我在audio_standard中render的write接口的时候的疑问。)

关于鸿蒙napi的异步机制的疑问,执行逻辑是跑在js线程上吗?-鸿蒙开发者社区

NAPI,异步机制
2021-11-04 16:28:19
浏览
收藏 2
回答 1
待解决
回答 1
按赞同
/
按时间
红叶亦知秋
2

async 的实现逻辑是js的语言规范规定的,

关于多线程,可以启动多个JS线程或者采用worker的机制。

楼主可以参考:https://www.ecma-international.org/ecma-262/6.0/index.html

分享
微博
QQ
微信
回复
2021-11-10 16:28:30
相关问题
openharmony napi 异步耗时阻塞jsui刷新
3400浏览 • 1回复 已解决
js 怎么开启异步线程?
4310浏览 • 1回复 待解决
关于逻辑删除问题有懂
894浏览 • 1回复 待解决
关于鸿蒙应用开发疑问?
3675浏览 • 1回复 待解决
hello world 鸿蒙os 3.0不起来
546浏览 • 1回复 待解决
关于鸿蒙camera外设驱动编写疑问
2289浏览 • 1回复 待解决
关于Wearable开发几个疑问
5813浏览 • 2回复 待解决
polardbceph共享存储里面
1251浏览 • 1回复 待解决
关于DependentLayout布局一点疑问
3941浏览 • 1回复 待解决
ArkTS代码执行效率如何提升
192浏览 • 1回复 待解决
关于智能穿戴应用开发几个疑问
8580浏览 • 2回复 待解决
请教一下关于Ticktimer 疑问
1562浏览 • 1回复 待解决