addMicroTask method

void addMicroTask(
  1. Task<Object> task
)

Implementation

void addMicroTask(Task task) {
  _microTasks.add(task);

  /// 只要添加了任务,则就需要主动触发hook,以便处理事件
  assert(FrameUtil.phase != SchedulerPhase.midFrameMicrotasks,
      "可能需要考虑,如果是在mid微任务阶段触发了任务准备好,会出现什么问题?,因为这种情况一般场景不会出现,暂时图省事先不做考虑了,如果你遇到必须在微任务完成的场景,触发了该断言,你可以报告给作者");
  assert(FrameUtil.phase != SchedulerPhase.persistentCallbacks, "目前初始化跳转不会添加任务,所以不可能出现在persistent阶段任务准备完成的情况");
  if (FrameUtil.phase == SchedulerPhase.transientCallbacks) {
    /// 必须保证动画过程中同帧加载,因为动画阶段添加TransientCallbacks是不会触发的
    triggerMicroTask();
  } else {
    addTransientCallbacks();
  }
}