- EmberJS 教程
- EmberJS - 首页
- EmberJS - 概述
- EmberJS - 安装
- EmberJS - 核心概念
- 创建和运行应用程序
- EmberJS - 对象模型
- EmberJS - 路由器
- EmberJS - 模板
- EmberJS - 组件
- EmberJS - 模型
- EmberJS - 管理依赖项
- EmberJS - 应用程序关注点
- EmberJS - 配置 Ember.js
- EmberJS - Ember 检查器
- EmberJS 有用资源
- EmberJS - 快速指南
- EmberJS - 有用资源
- EmberJS - 讨论
EmberJS - 运行循环
这是应用程序大部分内部代码发生的地方。它用于批量处理,是一种对工作进行排序或重新排序以检查其有效性和效率的方式。它基于特定队列调度工作,以便按优先级顺序完成工作。
将运行循环与非 Ember API 集成会导致一些异步回调。例如:
- setTimeout 和 setInterval 回调
- AJAX 回调
- postMessage 和 messageChannel 事件处理程序
- Websocket 回调
- DOM 更新和事件回调
Ember 中的运行循环基于按优先级指定的队列:
Ember.run.queues => ["sync", "actions", "routerTransitions", "render", "afterRender", "destroy"]
sync - 这是一个更高优先级的队列,包含绑定同步作业。
actions - 这是一个通用工作队列,包含计划的任务。
routerTransitions - 它指定路由器中的转换作业。
render - 它用于渲染更新 DOM 的作业。
afterRender - 它在完成计划的任务后运行作业。
destroy - 这是一个较低优先级的队列,它终止计划销毁的作业。
基于队列的作业执行
请按照以下步骤执行基于队列的作业:
步骤 1 - 在此步骤中,将检查 CURRENT_QUEUE 中最高优先级队列的挂起作业。如果没有挂起的作业,则运行循环将完成。
步骤 2 - 将新的临时队列指定为 WORK_QUEUE。
步骤 3 - 将作业从 CURRENT_QUEUE 传输到 WORK_QUEUE。
步骤 4 - 依次处理 WORK_QUEUE 中的作业。
步骤 5 - 从步骤 1 重复。
测试时的运行循环行为
如果尝试在没有运行循环的情况下调度工作,则当应用程序处于测试模式时,Ember 将抛出错误。请考虑以下原因以了解为什么禁用 Autoruns:
如果在调度回调之前未能打开运行循环,则 Autoruns 不会在生产中出错。
禁用 autoruns 可以识别在应用程序在运行循环之外运行时发生的错误测试失败,并有助于测试您的应用程序。
有关这些运行循环以及示例的更多信息,请参阅此 链接。
emberjs_application_concerns.htm
广告