Hoje quero mostrar uma funcionalidade que chamada Promise.race. Ela vai receber uma lista de promises no JavaScript e ele vai retornar apenas uma dessas promise: a que rejeitar ou resolver primeiro. Vamos criar uma função que é uma promise:
const p = (time, name) => {
return new Promise((resolve, reject) => {
setTimeOut(() => resolve(time + ' ' + name), time)
})
}
p(100, 'opa').then((e) => console.log(e))
Ao rodar esse código, ele retorna opa depois de 100ms. Agora vamos criar uma lista chamada de OS, e dentro dela faremos uma lista de promises:
const os = [P(100, 'opa'), P(200, 'opa2')]
Promise.race(os).then((e) => console.log(e))
Ao rodar, vai trazer a primeira promise, isso não quer dizer que ele pare a operação do outro. Ele continua executando, porém não retorna para o resultado, mesmo se rejeitarmos. Obviamente é o contrário do Promise.all, que é quando retornamos todos:
Promise.all(os).then((e) => console.log(e))
Assim vamos ter todos os retornos, ao contrário do race.
Curta o
DevPleno no Facebook, se inscreva no
canal no YouTube e cadastre seu e-mail para não perder as atualizações. Abraço!