EmberJS - Run Loop
É uma área onde ocorre a maior parte do código interno do aplicativo. Isso é usado para lotes e é uma forma de solicitar ou reordenar o trabalho para verificar se ele é eficaz e eficiente. Ele agenda o trabalho com base em filas específicas para concluir o trabalho em ordem de prioridade.
Integrar o loop de execução com API não Ember leva a algum retorno de chamada assíncrono. Por exemplo -
- retornos de chamada setTimeout e setInterval
- Callbacks AJAX
- Manipuladores de eventos postMessage e messageChannel
- Callbacks de Websocket
- Atualização DOM e retornos de chamada de evento
O loop de execução funciona em Ember com base em filas especificadas em termos de prioridade -
Ember.run.queues
=> ["sync", "actions", "routerTransitions", "render", "afterRender", "destroy"]
sync - É uma fila de prioridade mais alta que inclui trabalhos de sincronização de ligação.
actions - É uma fila de trabalho geral que inclui tarefas agendadas.
routerTransitions - Especifica os trabalhos de transição no roteador.
render - É usado para renderizar os trabalhos que atualizam o DOM.
afterRender - Executa os trabalhos após completar as tarefas agendadas.
destroy - É uma fila de prioridade mais baixa que encerra os trabalhos que estão programados para serem destruídos.
Execução de trabalhos com base em filas
Siga estas etapas para a execução de Jobs com base em Filas -
Step 1- Nesta etapa, os trabalhos pendentes da fila de prioridade mais alta serão verificados em CURRENT_QUEUE. O ciclo de execução será concluído, se não houver trabalhos pendentes.
Step 2- Especifique a nova fila temporária como WORK_QUEUE .
Step 3- Transfira os trabalhos de CURRENT_QUEUE para WORK_QUEUE .
Step 4- Processar sucessivamente os jobs em WORK_QUEUE .
Step 5 - Repita a partir da Etapa 1.
Comportamento do Run Loop durante o teste
Se tentarmos agendar o trabalho sem o loop de execução, o Ember gerará um erro quando o aplicativo estiver em modo de teste. Considere os seguintes motivos para entender por que Autoruns estão desativados -
Se você não conseguir abrir o loop de execução antes de agendar callbacks nele, o Autoruns não cometerá nenhum erro na produção.
A desativação das execuções automáticas identifica as falhas de teste incorretas que ocorrem quando um aplicativo é executado fora de um loop de execução e ajuda no teste de seu aplicativo.
Para obter mais informações sobre esses loop de execução junto com um exemplo, consulte este link .