< Return to Video

vimeo.com/.../1075761081

  • 0:08 - 0:10
    Você está comprando
    um produto na Amazon
  • 0:10 - 0:11
    e, ao finalizar essa compra,
  • 0:11 - 0:13
    esse produto
    vai para a separação.
  • 0:13 - 0:15
    Enquanto ele está
    em separação,
  • 0:15 - 0:20
    você pode comprar outros produtos
    e realizar outros pedidos.
  • 0:20 - 0:24
    Isso é uma visão de usuário.
    E como desenvolvedor?
  • 0:24 - 0:26
    No modo desenvolvedor,
  • 0:26 - 0:30
    utilizamos duas sintaxes
    muito poderosas:
  • 0:30 - 0:32
    o "async" e o "await".
  • 0:32 - 0:34
    Pensando no exemplo
    da Amazon,
  • 0:34 - 0:38
    o "async" é quando
    você finaliza o pedido.
  • 0:38 - 0:43
    Já o "await" é a espera
    da separação desse pedido.
  • 0:43 - 0:46
    Enquanto isso,
    você pode comprar outras coisas,
  • 0:46 - 0:49
    pode colocar outros
    produtos no carrinho
  • 0:49 - 0:51
    e até mesmo comprar
    o mesmo produto,
  • 0:51 - 0:55
    sem atrapalhar o pedido
    que já está em andamento.
  • 0:55 - 1:00
    Isso é uma forma de esperar
    outras requisições serem executadas.
  • 1:00 - 1:04
    Vamos colocar em prática
    os conceitos de "async" e "await".
  • 1:04 - 1:08
    Nesse exemplo,
    vamos aplicar uma lista
  • 1:08 - 1:12
    na qual eu consigo
    trazer clientes inativos
  • 1:12 - 1:14
    e quando foi a última
    compra que eles fizeram.
  • 1:14 - 1:15
    Vamos ao código?
  • 1:15 - 1:17
    Na estrutura do código,
  • 1:17 - 1:21
    temos aqui o nosso HTML
    chamando o script,
  • 1:21 - 1:27
    temos aqui o código do script
    já pronto que está no seu material,
  • 1:27 - 1:32
    e um arquivo novo,
    que é um JSON,
  • 1:32 - 1:36
    com os dados dos clientes
    que eu preciso trazer,
  • 1:36 - 1:41
    que estão inativos,
    e quando foi a última compra deles.
  • 1:41 - 1:45
    Vou explicar linha por linha
    para que vocês possam entender.
  • 1:45 - 1:47
    Bem, vamos começar
    pelo script.
  • 1:47 - 1:51
    Primeiro, é criada
    uma função "listaDados",
  • 1:51 - 1:57
    mas, antes, eu coloco
    a palavra "async",
  • 1:57 - 2:02
    porque esta função vai executar
    de forma assíncrona.
  • 2:02 - 2:07
    Com isso, quando essa função
    começar a ser executada,
  • 2:07 - 2:12
    ela não terá problema
    em executar outras operações.
  • 2:12 - 2:14
    Na segunda linha,
    nós temos a requisição.
  • 2:14 - 2:18
    Então, por exemplo: criei uma
    variável chamada "response",
  • 2:18 - 2:23
    que vai ter a outra palavra
    chamada "await".
  • 2:23 - 2:26
    Nesse caso aqui,
    ele vai esperar.
  • 2:26 - 2:28
    Esperar o quê?
  • 2:28 - 2:34
    Esse método "fetch" que vai
    até o arquivo "dados.json",
  • 2:34 - 2:37
    que é exatamente
    esse arquivo aqui.
  • 2:37 - 2:41
    Aqui também poderia ser
    uma requisição HTTP
  • 2:41 - 2:44
    como placeholder,
  • 2:44 - 2:47
    que está no material de vocês
    como requisição.
  • 2:47 - 2:49
    Aqui, eu estou dando exemplo
    como arquivo, por que?
  • 2:49 - 2:55
    O "async" lê arquivos
    ou requisições HTTP.
  • 2:55 - 2:59
    No material de vocês já tem
    um exemplo como requisição,
  • 2:59 - 3:04
    e aqui estou fazendo um exemplo
    prático lendo um arquivo.
  • 3:04 - 3:08
    Então, nesse exemplo,
    o "await" vai esperar
  • 3:08 - 3:17
    o "fetch" ir até o "dados.json"
    ler todos esses dados aqui.
  • 3:17 - 3:20
    Ele traz, joga dentro
    dessa variável aqui
  • 3:20 - 3:22
    que eu estou criando,
    chamada "dados",
  • 3:22 - 3:24
    Então, esse "response"...
  • 3:24 - 3:29
    Perceba que esse "response"
    recebe o arquivo "dados",
  • 3:29 - 3:31
    e vou colocar dentro
    de uma variável chamada "dados".
  • 3:31 - 3:32
    Por quê?
  • 3:32 - 3:36
    A web só consegue
    ler arquivos JSON.
  • 3:36 - 3:39
    Então, tudo que nós
    temos aqui por trás
  • 3:39 - 3:44
    do que o seu navegador
    pode entender é arquivo JSON.
  • 3:44 - 3:47
    Então, nessa função,
    eu fui lá, peguei os dados,
  • 3:47 - 3:50
    e joguei dentro de uma variável
    chamada "dados",
  • 3:50 - 3:52
    e vou retornar esse "dados".
  • 3:52 - 3:56
    Vou retornar tudo o que estiver
    dentro desse arquivo aqui.
  • 3:56 - 3:57
    Ótimo.
  • 3:57 - 4:02
    Para isso acontecer,
    eu tenho que fazer uma promessa.
  • 4:02 - 4:03
    Chamamos isso de "promise".
  • 4:03 - 4:05
    E o que é uma promessa?
  • 4:05 - 4:10
    É uma garantia de que, se os dados
    forem lidos corretamente,
  • 4:10 - 4:12
    vai dar certo,
    vai mostrar tudo bonitinho.
  • 4:12 - 4:14
    Se não, ele vai
    apresentar um erro.
  • 4:14 - 4:15
    Então, vamos lá.
  • 4:15 - 4:20
    Eu trago aqui a "listaDados",
    que é o nome da minha função,
  • 4:20 - 4:22
    e aí, aqui, eu coloco ".then".
  • 4:22 - 4:24
    Então, "dados"...
  • 4:24 - 4:28
    Aqui contém todos
    aqueles arquivos.
  • 4:28 - 4:31
    "dados",
    faço um "console.log",
  • 4:31 - 4:33
    e apresento todos os dados
    aqui na minha tela.
  • 4:33 - 4:36
    Se não acontecer isso,
  • 4:36 - 4:38
    ele vai me trazer
    uma mensagem de erro.
  • 4:38 - 4:41
    Ou seja, se os dados
    estiverem corrompidos
  • 4:41 - 4:43
    ou não estiverem
    no formato correto,
  • 4:43 - 4:48
    ele vai entrar aqui nesse "catch"
    e vai apresentar como erro.
  • 4:48 - 4:53
    Esse é um exemplo de criar
    uma função com "async" e "await".
  • 4:53 - 4:55
    E o que vai acontecer?
  • 4:55 - 4:57
    Quando ele estiver
    com esse erro,
  • 4:57 - 5:02
    ele vai trazer o erro bonitinho,
    sem problemas de travar a página.
  • 5:02 - 5:06
    Em um modo síncrono,
    ele travava a página.
  • 5:06 - 5:10
    Se der erro, ele vai travar a página,
    e não vai deixar você sair dela.
  • 5:10 - 5:12
    Como nós estamos
    falando de um assíncrono,
  • 5:12 - 5:16
    eu consigo manipular a página,
  • 5:16 - 5:20
    limpar ou resetar,
    iniciar a função novamente.
  • 5:20 - 5:21
    Então, vamos lá.
  • 5:21 - 5:25
    Bem pessoal, percebam que,
    aqui, ele deu um erro.
  • 5:25 - 5:27
    Ele está falando que não
    pode acessar o "dados"
  • 5:27 - 5:30
    antes de ser inicializado.
  • 5:30 - 5:31
    Então, ele já entrou
    no "catch" direto,
  • 5:31 - 5:33
    já é um exemplo do erro,
  • 5:33 - 5:39
    mas isso não fez com que
    a aplicação parasse, travasse.
  • 5:39 - 5:40
    O erro está aqui:
  • 5:40 - 5:45
    é que eu não estou passando
    dentro de aspas simples.
  • 5:45 - 5:50
    Olha lá, agora ele me trouxe
    os dados do cliente,
  • 5:50 - 5:54
    a última compra dele
    e se ele está ativo ou não.
  • 5:54 - 5:58
    "false", ele está inativo,
    "true", ele está ativo.
  • 5:58 - 6:00
    Então, nós temos aqui
  • 6:00 - 6:03
    dois clientes ativos
    e três clientes inativos.
  • 6:03 - 6:07
    E olha as datas em que
    eles fizeram a última compra.
  • 6:07 - 6:11
    Por exemplo: esse aqui
    foi em 10/02/2020.
  • 6:11 - 6:14
    Isso te ajuda a poder, depois,
    criar uma outra função
  • 6:14 - 6:17
    que mande mensagem
    para esses clientes
  • 6:17 - 6:21
    para que eles possam
    voltar a comprar.
  • 6:21 - 6:24
    Esse é um exemplo
    de "async" e "await".
  • 6:24 - 6:26
    Agora que você já sabe
    os conceitos de "async" e "await",
  • 6:26 - 6:29
    convido você a ter
    um olhar de usuário
  • 6:29 - 6:32
    e, ao mesmo tempo, de dev,
  • 6:32 - 6:36
    trazendo o seu mundo real
    para o código
  • 6:36 - 6:39
    ao olhar um aplicativo.
  • 6:39 - 6:42
    Onde está o "await"?
    Onde está o "async"?
  • 6:42 - 6:43
    E como aplicá-los?
Title:
vimeo.com/.../1075761081
Video Language:
Portuguese, Brazilian
Duration:
06:47

Portuguese, Brazilian subtitles

Revisions Compare revisions