Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Função do async em um código específico

No arquivo "kako_bot.dart" no trecho "void main() async", mesmo eu tirando o "async" (passando a ser apenas "void main()") o programa aparentemente continua funcionando normalmente. Qual seria a função do "async" neste código?

          • CÓDIGO ORIGINAL - - - - -
void main() async {
  String ThassioBot = 'ThassioBOT:\n';
  var a = true;
  String usuario = '';
  String nomeBot = 'Thassio';

  print('-- Iniciando o ${nomeBot}BOT, aguarde..--');

  print('${nomeBot}BOT:\n Oi :) \n Como posso ajudar?');
  do {
    usuario = stdin.readLineSync().toString();
    print('-- Processando pergunta, aguarde..--');
    if (usuario.contains('xau') ||
        usuario.contains('Xau') ||
        usuario.contains('Adeus') ||
        usuario.contains('adeus')) {
      a = false;
      print('${nomeBot}Bot: Até a proxima!!');
    } else if (TimeQuestions(usuario).isThisTime()) {
      // verificar antes, assim não fazemos toda a função sem precisar.
      TimeQuestions(usuario).timeQuestion();
    } else if (false) {
      //Basta adicionar novas perguntas aqui!
    } else {
      print('${nomeBot}BOT: \n'
          ' Não fui treinado para responder a essa pergunta \n Desculpe :( ');
      print('${nomeBot}BOT: Você pode fazer outra pergunta ou dizer Adeus');
    }
  } while (a);

  print('--Encerrando ThassioBOT--');
}
          • FIM CÓDIGO ORIGINAL - - - - -
1 resposta
solução!

Olá, Thassio. Tudo bem?

A palavra-chave async é usada para declarar que uma função é assíncrona. Ela é usada em conjunto com await para lidar com operações assíncronas.

No seu código, a palavra-chave async não parece ser necessária, pois não há nenhuma operação assíncrona (como solicitações de rede, leitura de arquivo, etc.) que precisaria ser esperada usando a palavra-chave await.

Então, você está correto, neste caso, deixar ou remover o async não afeta o funcionamento do seu código.

No entanto, em uma situação onde você precisa esperar por uma operação assíncrona para ser concluída antes de prosseguir, você usaria async e await. Por exemplo:

void main() async {
  print('fetching data...');
  var data = await fetchDataFromSomewhere(); // assume que esta é uma função que demora para buscar dados
  print('data fetched: $data');
}

Neste exemplo, fetchDataFromSomewhere é uma operação que pode levar algum tempo para ser concluída (por exemplo, buscar dados de uma API de rede). Usamos await para dizer ao Dart para esperar essa operação ser concluída antes de prosseguir. E a função que contém await deve ser marcada como async.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.