logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Visão geral do RunJS
Importando módulos
Renderização no contêiner

Variáveis globais

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.element
Next Pagectx.exitAll()
Aviso de tradução por IA

Este documento foi traduzido por IA. Para informações precisas, consulte a versão em inglês.

#ctx.exit()

Encerra a execução do fluxo de eventos atual; as etapas subsequentes não serão executadas. É comumente usado quando as condições de negócio não são atendidas, o usuário cancela ou ocorre um erro irrecuperável.

#Cenários de uso

O ctx.exit() é geralmente usado nos seguintes contextos onde o JS pode ser executado:

CenárioDescrição
Fluxo de eventosEm fluxos de eventos acionados por envios de formulários, cliques em botões, etc., interrompe as etapas subsequentes quando as condições não são atendidas.
Regras de vinculaçãoEm vinculações de campos, vinculações de filtros, etc., encerra o fluxo de eventos atual quando a validação falha ou quando a execução precisa ser pulada.
Eventos de açãoEm ações personalizadas (ex: confirmação de exclusão, validação pré-salvamento), sai quando o usuário cancela ou a validação não passa.

Diferença em relação ao ctx.exitAll(): o ctx.exit() encerra apenas o fluxo de eventos atual; outros fluxos de eventos sob o mesmo evento não são afetados. O ctx.exitAll() encerra o fluxo de eventos atual, bem como quaisquer fluxos de eventos subsequentes sob o mesmo evento que ainda não foram executados.

#Definição de tipo

exit(): never;

Chamar ctx.exit() lança uma exceção interna FlowExitException, que é capturada pelo mecanismo de fluxo (FlowEngine) para interromper a execução do fluxo de eventos atual. Uma vez chamado, as instruções restantes no código JS atual não serão executadas.

#Comparação com ctx.exitAll()

MétodoEscopo de efeito
ctx.exit()Encerra apenas o fluxo de eventos atual; os fluxos de eventos subsequentes não são afetados.
ctx.exitAll()Encerra o fluxo de eventos atual e interrompe os fluxos de eventos subsequentes sob o mesmo evento que estão configurados para execução sequencial.

#Exemplos

#Sair ao cancelar o usuário

// Em um modal de confirmação, encerra o fluxo de eventos se o usuário clicar em cancelar
if (!confirmed) {
  ctx.message.info('Operação cancelada');
  ctx.exit();
}

#Sair em caso de falha na validação de parâmetros

// Exibe um alerta e encerra quando a validação falha
if (!params.value || params.value.length < 3) {
  ctx.message.error('Parâmetros inválidos, o comprimento deve ser de pelo menos 3');
  ctx.exit();
}

#Sair quando as condições de negócio não são atendidas

// Encerra se as condições não forem atendidas; as etapas subsequentes não serão executadas
const record = ctx.model?.getValue?.();
if (!record || record.status !== 'draft') {
  ctx.notification.warning({ message: 'Apenas rascunhos podem ser enviados' });
  ctx.exit();
}

#Escolhendo entre ctx.exit() e ctx.exitAll()

// Apenas o fluxo de eventos atual precisa sair → Use ctx.exit()
if (!params.valid) {
  ctx.message.error('Parâmetros inválidos');
  ctx.exit();  // Outros fluxos de eventos não são afetados
}

// Necessário encerrar todos os fluxos de eventos subsequentes sob o evento atual → Use ctx.exitAll()
if (!ctx.model?.context?.getPermission?.()) {
  ctx.notification.warning({ message: 'Permissões insuficientes' });
  ctx.exitAll();  // Tanto o fluxo de eventos atual quanto os subsequentes sob o mesmo evento são encerrados
}

#Sair com base na escolha do usuário após confirmação em modal

const ok = await ctx.modal?.confirm?.({
  title: 'Confirmar exclusão',
  content: 'Esta ação não pode ser desfeita. Deseja continuar?',
});
if (!ok) {
  ctx.message.info('Cancelado');
  ctx.exit();
}

#Observações

  • Após chamar ctx.exit(), o código subsequente no JS atual não será executado; recomenda-se explicar o motivo ao usuário via ctx.message, ctx.notification ou um modal antes de chamá-lo.
  • Geralmente não há necessidade de capturar FlowExitException no código de negócio; deixe que o mecanismo de fluxo o manipule.
  • Se você precisar encerrar todos os fluxos de eventos subsequentes sob o evento atual, use ctx.exitAll().

#Relacionado

  • ctx.exitAll(): Encerra o fluxo de eventos atual e os fluxos de eventos subsequentes sob o mesmo evento.
  • ctx.message: Mensagens de alerta.
  • ctx.modal: Modais de confirmação.