Skip to content

Instantly share code, notes, and snippets.

@dekisr
Last active January 22, 2019 13:46
Show Gist options
  • Save dekisr/8bcc99fc3df2a2735605de721b5cfbe4 to your computer and use it in GitHub Desktop.
Save dekisr/8bcc99fc3df2a2735605de721b5cfbe4 to your computer and use it in GitHub Desktop.
Exemplos para Paulo (escopo assíncrono & promise)
// Como as vars
let i = 1
for (i = 1; i < 4; ++i) {
setTimeout(() => console.log(i), i*1000)
} // expect 4 4 4
// Escopo a cada iteração
for (let i = 5; i < 8; ++i) {
setTimeout(() => console.log(i), i*1000)
} // expect 5 6 7
// Principal problema: Tratamento de Erros
const lixo = (callback) => {
// E se um erro ocorrer aqui?
window.setTimeout(() => {
// Mas e se for aqui?
console.log('Oi')
// Pode ser aqui
callback()
// Pode acontecer em qualquer lugar...
}, 1000)
// Como tratar todos os erros?
}
// Outro problema: Pyramid of Doom
lixo(() => {
console.log('Depois do Oi')
lixo(() => {
console.log('Mais um Oi')
lixo(() => {
console.log('Outro Oi')
lixo(() => {
console.log('Oitavo Oi')
lixo(() => {
console.log('Décimo Oi')
lixo(() => {
console.log('Vai Oi')
lixo(() => {
console.log('Tchau')
})
})
})
})
})
})
})
// Promise simples
const agoraVai = new Promise((resolve, reject) => {
window.setTimeout(() => {
console.log('========== TESTE ==========')
console.log('Oi')
resolve('Depois do Oi')
}, 10000)
})
agoraVai
.then((resposta) => console.log(resposta))
.then(_ => {
console.log('Oi?')
return 'Tchau'
})
.then((resposta) => console.log(resposta))
.catch((erro) => console.log(erro))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment