相关问题
鸿蒙ArkTs 开发,@Watch 对应的执行方法,和build 的执行顺序 是怎样的?
2353浏览 • 1回复 待解决
关于鸿蒙napi的异步机制的疑问,执行逻辑是跑在js线程上吗?
7804浏览 • 1回复 待解决
HarmonyOS 怎么实现任务串行顺序执行
265浏览 • 1回复 待解决
HarmonyOS 如何将一个异步的方法包装成同步的方法,在程序中顺序执行?
315浏览 • 1回复 待解决
如何获知TaskPool执行顺序、优先级?
699浏览 • 0回复 待解决
@Watch装饰器的回调执行顺序
185浏览 • 1回复 待解决
HarmonyOS ArkTS开发中,异步回调,怎么切到主线程执行呢
487浏览 • 1回复 待解决
@Watch对应的执行方法,和build的执行顺序是怎样的
1693浏览 • 1回复 待解决
需要怎么让方法执行顺序 按照代码顺序执行? 初始化代码一直在模型文件复制成功之前就执行了
1604浏览 • 1回复 待解决
arkts 关于异步的问题
194浏览 • 1回复 待解决
mysql查询语句执行顺序的问题有懂的吗?
1926浏览 • 1回复 待解决
HarmonyOS 如何使用TaskPool进行异步IO,同时保证文件写入是顺序的
344浏览 • 1回复 待解决
组件状态修改与build渲染机制
779浏览 • 1回复 待解决
HarmonyOS ArkTS调用Native接口机制咨询
355浏览 • 1回复 待解决
XHR使用POST提交方式异步导致js代码提前执行
2021浏览 • 1回复 待解决
ArkTS 的异步编程模型是如何实现的?
56浏览 • 0回复 待解决
HarmonyOS在异步线程往主线程抛任务无法被执行
279浏览 • 1回复 待解决
ArkTs中异步方法如何转变成同步方法
2168浏览 • 0回复 待解决
如何确保执行顺序,是否需要加锁
1623浏览 • 1回复 待解决
如何在Native侧调用ArkTS侧异步方法,并获取异步计算结果到Native侧
2380浏览 • 1回复 待解决
关于ArkTS的线程机制是怎么样的?
382浏览 • 2回复 待解决
ArkTS与C++互相直接调用
1852浏览 • 1回复 待解决
UIAbility的onDestroy()函数是同步的,怎么保证异步方法执行完
1936浏览 • 1回复 待解决
鸿蒙NAPI机制具体的执行过程,如何实现js和c++通信的
13212浏览 • 1回复 待解决
如何指定多个异步任务在同一个辅助线程内执行
748浏览 • 0回复 待解决
异步机制
ArkTs仅在单线程(主线程)上执行任务,其异步机制与JavaScript一致,都是通过宿主环境提供的携程实现(napi,其接口与nodejs一致),即通过EventLoop实现。
EventLoop
EventLoop负责循环监视调用堆栈和回调队列,如果调用堆栈为空,它将从回调队列中获取第一个事件,并将其推送到调用堆栈。
以setTimeout为例:
执行顺序:
注意,setTimeout中设置的时间,是计时器过期时将回调放入回调队列的时间,而不是回调函数被执行的时间(只有调用栈是空的,EventLoop才会从调用栈中取)
执行顺序
与JavaScript一样,AkrTs也存在宏任务(Macrotask)队列和 微任务(Microtask)队列。宏任务例如setTimeout、setInterval,微任务例如普通回调函数,Promise相关函数等。
其执行顺序为:
− 当微任务队列非空时:
− 出队(dequeue)并执行最早的微任务;
− 继续检查微任务队列空不空(即执行完所有的微任务,新创建的微任务会立即进入微任务队列排队执行,不需要等待下一次轮回);
举例
执行顺序: