关于鸿蒙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
按赞同
/
按时间
红叶亦知秋

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

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

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

分享
微博
QQ
微信
回复
2021-11-10 16:28:30
相关问题
js 怎么开启异步线程?
1344浏览 • 1回复 待解决
关于鸿蒙应用开发疑问?
1711浏览 • 1回复 待解决
关于Wearable开发几个疑问
3775浏览 • 2回复 待解决
关于DependentLayout布局一点疑问
1340浏览 • 1回复 待解决
关于智能穿戴应用开发几个疑问
5503浏览 • 2回复 待解决
模拟器不显示device模块
1613浏览 • 1回复 待解决
并行执行算子问题有懂
176浏览 • 1回复 待解决
鸿蒙基于Android
5140浏览 • 2回复 已解决
关于 JS UI 开发应用问题?
1579浏览 • 1回复 待解决
关于鸿蒙分布式数据库key疑问
2237浏览 • 1回复 待解决
关于JS http请求参数传递问题
2005浏览 • 1回复 待解决
js Fa如何实现线程间通信?
1645浏览 • 1回复 待解决