Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Por que eu tenho que usar o método .then duas vezes?

let clients = ( ) => {
      return fetch('http://fjkjdkdjaksdjas.com')
      .then(response => {
           return response.json()
       })
      .then(json => {
           return json
      })
}
3 respostas
solução!

Fala ai Clara, tudo bem? Quando precisamos encadear chamadas de then's (utilizar o then duas vezes) é porque estamos encadeando chamadas de Promises.

Ou seja, no seu código:

let clients = ( ) => {
      return fetch('http://fjkjdkdjaksdjas.com')
      .then(response => {
           return response.json()
       })
      .then(json => {
           return json
      })
}

O primero then:

fetch('http://fjkjdkdjaksdjas.com')
    .then(response => {
    return response.json()
    })

Aqui a função fetch vai retornar uma Promise, que será resolvida quando a requisição termina (seja com sucesso ou erro). Uma vez que tudo deu certo e nenhum erro ocorreu, o then será chamado e a função json também.

Isso nos leva para o segundo:

.then(response => {
    return response.json()
})
.then(json => {
    return json
})

Aqui é necessário chamar o then novamente porque o resultado da função json também é uma Promise, sendo assim, estamos passando como retorno do primeiro then outra Promise, por isso chamamos o then novamente.

Com isso estamos encadeando chamadas de Promise's, ou seja, uma Promise pode retornar outra Promise, que pode retornar outra, etc...

Espero ter ajudado.

Aha! json retorna uma promise tb. Muito obrigada! :)

Magina Clara, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.