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 .