相关问题
鸿蒙ArkTs 开发,@Watch 对应的执行方法,和build 的执行顺序 是怎样的?
864浏览 • 1回复 待解决
关于鸿蒙napi的异步机制的疑问,执行逻辑是跑在js线程上吗?
6608浏览 • 1回复 待解决
如何获知TaskPool执行顺序、优先级?
290浏览 • 0回复 待解决
@Watch对应的执行方法,和build的执行顺序是怎样的
607浏览 • 1回复 待解决
需要怎么让方法执行顺序 按照代码顺序执行? 初始化代码一直在模型文件复制成功之前就执行了
394浏览 • 1回复 待解决
组件状态修改与build渲染机制
324浏览 • 1回复 待解决
mysql查询语句执行顺序的问题有懂的吗?
825浏览 • 1回复 待解决
XHR使用POST提交方式异步导致js代码提前执行
1072浏览 • 1回复 待解决
ArkTs中异步方法如何转变成同步方法
565浏览 • 0回复 待解决
如何在Native侧调用ArkTS侧异步方法,并获取异步计算结果到Native侧
819浏览 • 1回复 待解决
鸿蒙NAPI机制具体的执行过程,如何实现js和c++通信的
11328浏览 • 1回复 待解决
UIAbility的onDestroy()函数是同步的,怎么保证异步方法执行完
541浏览 • 1回复 待解决
如何指定多个异步任务在同一个辅助线程内执行
397浏览 • 0回复 待解决
如何确保执行顺序,是否需要加锁
447浏览 • 1回复 待解决
ArkTS与C++互相直接调用
469浏览 • 1回复 待解决
通过Redis作为中间缓存,Redis数据更新后再通过消息机制异步更新数据库,这样可行吗?
1054浏览 • 1回复 待解决
ArkTS层实例化与单例介绍
511浏览 • 1回复 待解决
Rabbitmq 采用自动确认机制后,单线程循环读取 list 数据后发送,为什么到达的顺序会错乱呢?
1079浏览 • 1回复 待解决
ArkTS在代码执行效率是如何提升的
631浏览 • 1回复 待解决
ArkTS版本如何实现RSA分段加密与解密?
726浏览 • 0回复 待解决
如何在ArkTS代码中执行HTML内的JS函数
812浏览 • 1回复 待解决
如何进行全局异常捕获机制,类似ANR机制
592浏览 • 1回复 待解决
ArkTS 的空安全机制里,对于参数类型的空安全是什么规则?
554浏览 • 1回复 待解决
H5页面如何与ArkTS交互
1315浏览 • 1回复 待解决
鸿蒙ArkTS如何实现分段加密与解密工具类
536浏览 • 0回复 待解决
异步机制
ArkTs仅在单线程(主线程)上执行任务,其异步机制与JavaScript一致,都是通过宿主环境提供的携程实现(napi,其接口与nodejs一致),即通过EventLoop实现。
EventLoop
EventLoop负责循环监视调用堆栈和回调队列,如果调用堆栈为空,它将从回调队列中获取第一个事件,并将其推送到调用堆栈。
以setTimeout为例:
执行顺序:
注意,setTimeout中设置的时间,是计时器过期时将回调放入回调队列的时间,而不是回调函数被执行的时间(只有调用栈是空的,EventLoop才会从调用栈中取)
执行顺序
与JavaScript一样,AkrTs也存在宏任务(Macrotask)队列和 微任务(Microtask)队列。宏任务例如setTimeout、setInterval,微任务例如普通回调函数,Promise相关函数等。
其执行顺序为:
− 当微任务队列非空时:
− 出队(dequeue)并执行最早的微任务;
− 继续检查微任务队列空不空(即执行完所有的微任务,新创建的微任务会立即进入微任务队列排队执行,不需要等待下一次轮回);
举例
执行顺序: