Demande de correction nodejs

bonjour, je dispose d’un tableau d’objets js construit comme suis [{link:'https://some_url',text:"..."}].

je cherche a validé les url afin de :

  1. verifier que je dispose bien de l’url finale et si necessaire la mettre a jour,
  2. supprimer du tableau les objets dont l’url finale est sans interet (celle dont le status code !=200)

pour ce faire j’utilise 2 petites fonctions :


async function validateURL(array) {
    for (let elm of array) {
        let finalURL = await terminalURL(elm.link);

        if (typeof finalURL == 'string') {
            elm.link = finalURL;
        } else {
            array = array.filter(el => el.link != elm.link)
        }
    }
    console.log(array);
    return array;
}

async function terminalURL(url) {
    return new Promise((resolve, reject) => {
        axios({
            method: 'get',
            url: url,
            responseType: 'stream'
        }).then((response) => {
            if (response.data.responseUrl) {
                resolve(response.data.responseUrl);
            }
        }).catch(function(error) {
            reject(error.status);
        });
    }).catch((err) => {
        return ('some error');
    });
}

ces fonction semble faire le job que j’attend, par contre je ne suis pas sur que mon code soit bien optimiser.

De plus, de la façon dont j’ai structuré mon code, le traitement des url se fait de manière séquentielle, hors je souhaiterai que ce traitement ce fasse de manière parallèles. je m’explique :
l’appel a la fonction validateURL fait appel a la fonction terminalURLa qui elle passe l’url a contrôlé en paramètre, elle attend le retour de la fonction terminalURL et modifier les valeur de l’objet en fonction des résultats.

ce que je souhaiterai serait que la boucle for...of de la fonction validateURL lance mes différentes requêtes Axios en parallèle sans attendre les résultats de retour.
et que d’un autre coté, dés qu’une valeur est disponible, elle déclenche un évènement qui mette mon objet a jour.

de quelle coté dois je cherché ?

Go week-end, du coup pas trop le temps de m’attarder, mais je pense que ceci peut vous aider !

Promise.all()

Promise.all() - JavaScript | MDN

et un exemple d’utilisation avec async/await
https://www.taniarascia.com/promise-all-with-async-await/
(J’ai lu en diagonale mais je pense que vos réponses s’y trouvent)

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s