codelab@ime.usp.br
Grupo de extensão universitária que como objetivo estimular a inovação tecnológica na USP
Facebook:
Este trabalho do USPCodeLab está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional
O USPCodeLab é um grupo de extensão que tem como objetivo estimular a inovação tecnológica na USP
Juntando com manipulação no DOM
(ponto de partida)
- Element.innerHTML: propriedade que permite acessar ou modificar o HTML de um elemento
Execução de código síncrono
Execução de código assíncrono
TAREFA 1
TAREFA 2
TAREFA 3
tempo
tempo
Por que usar isso em JS?
Representa a conclusão eventual (ou a falha) de uma operação assíncrona e seu resultado
Usada para lidar com código assíncrono
(eventos que ocorrem de maneira independente ao fluxo principal do programa)
Rejeitada
Pendente
Resolvida
Cumprida
(Settled)
A promise for resolvida
promise.then(value => {
console.log('resolvido');
});
promise.catch(value => {
console.log('rejeitado');
});
A promise for rejeitada
Execute uma função quando (se):
Também é possível encadear as chamadas
promise.then(value => {
console.log('resolvido');
}).catch(value => {
console.log('rejeitado');
});
Sintaxe alternativa: await e try...catch
try {
await promise;
console.log('resolvido');
}
catch {
console.log('rejeitado');
}
promise.then(value => {
console.log('resolvido');
}).catch(value => {
console.log('rejeitado');
});
function handleBotaoLigar(evt) {
setStatusMessage("Chamando...");
navigator.mediaDevices.getUserMedia({
video: true, audio: true
}).then(chatStream => {
selfView.srcObject = chatStream;
...
setStatusMessage("Conectado");
}).catch(err => {
setStatusMessage("Falha ao conectar");
});
}
async function handleBotaoLigar(evt) {
setStatusMessage("Chamando...");
try {
chatStream = await (navigator.mediaDevices.getUserMedia({
video: true, audio: true
}));
}
catch (error) {
setStatusMessage("Falha ao conectar");
return;
}
selfView.srcObject = chatStream;
...
setStatusMessage("Conectado");
}
Permite fazer requisições para o servidor e carrega novas informações quando necessário. Por exemplo:
E tudo isso sem recarregar a página!
AJAX
Asynchronous JavaScript And XML
Termo usado para se referir a requisições HTTP no JavaScript
A resposta não é necessariamente em XML, pode ser JSON
Sintaxe básica
url: a URL que será acessada
options: parâmetros opcionais: método HTTP, cabeçalhos
Retorno: o fetch retorna um promise, que é resolvido num objeto Response assim que o servidor responder.
let promise = fetch(url, [options])
Sintaxe básica
let response = await fetch(url);
if (response.ok) { // se o HTTP-status for 200-299
// pega o corpo da resposta
let json = await response.json();
}
else {
alert("Erro HTTP: " + response.status);
}
O retorno Response possui vários métodos baseados em Promises, que dão acesso ao corpo em vários formatos:
- response.text() – lê a resposta e retorna como texto
- response.json() – interpreta a resposta como JSON
- response.blob() – retorna a resposta como Blob (tipo de dados binário
Veja outros em: JavaScript.info/fetch
Usando dados reais da OMDb API!
(ponto de partida)
Fazer uma pokédex usando a PokéAPI
Entrega no Google Classroom
By codelab@ime.usp.br
Grupo de extensão universitária que como objetivo estimular a inovação tecnológica na USP