Executando verificação de segurança...
4

Resolva o primeiro sucesso de várias promises no JavaScript com AggregateError

Já precisou de uma resposta rápida enquanto aguardava mais de uma promessa (promise)? Com Promise.any, você pode passar um array de promessas e capturar a primeira que for bem-sucedida, ignorando as que falharem.

Aqui está um exemplo prático para entender essa abordagem:

// Crio três promessas: duas que rejeitam e uma que resolve
const promise1 = new Promise((resolve, reject) => {
    setTimeout(() => reject(new Error("Erro na promessa 1")), 2000);
});

const promise2 = new Promise((resolve) => {
    setTimeout(() => resolve("Promessa 2 resolvida"), 3000);
});

const promise3 = new Promise((resolve, reject) => {
    setTimeout(() => reject(new Error("Erro na promessa 3")), 1000);
});

// Usa Promise.any para pegar a primeira promessa que for bem-sucedida
(async function getFirstSuccessPromise() {
    try {
        const firstResolved = await Promise.any([promise1, promise2, promise3]);
        console.log("Primeira promessa resolvida:", firstResolved);
    } catch (err) {
        if (err instanceof AggregateError) {
            console.log("AggregateError capturado:");
            err.errors.forEach(e => console.log(e.message));
        }
    }
})();

Nesse exemplo, o código irá garantir o retorno da segunda promessa, pois é a primeira que resolve com sucesso. Caso todas as promessas falhem, o Promise.any lança um AggregateError contendo todos os erros capturados, permitindo o tratamento conjunto.

Cenário de uso real

Um exemplo prático para Promise.any é em validações de formulário. Suponha que você precise validar um campo como CPF, RG ou CEP. Você pode consultar múltiplas APIs para verificar esses dados e, com Promise.any, o código usará a primeira resposta bem-sucedida, agilizando o processo de validação.

Carregando publicação patrocinada...
1

Isso pode ser útil quando o modelo local de AI dentro do navegador estiver disponível (ver flags e XP do browser Chrome).

const session = await window.ai.createTextSession();
const result = await session.prompt("What PL is the best language?").then((value) => {
  console.log(value);
});
console.log(result);
// by L. M.

Fonte Frame 403008