• # En javascript

    Posté par . En réponse au journal recherche-totoz en JavaScript. Évalué à 0.

    Je l'aurais plutot vu comme ca :

    const fetch = require('node-fetch')
    const xmljs = require('xml-js')
    const url ='https://totoz.eu/search.xml' 
    const searchTotoz = async query => {
     const terms = encodeURIComponent(query) 
     const xml = await fetch(`${url}?terms=${terms}`).then(r => r.text())
     const obj = xmljs.xml2js(xml,{compact: true})
     return Promise.resolve(obj.totozes.totoz.length ? obj.totozes.totoz : [obj.totozes.totoz])
    }
    if (!process.argv[2]) console.error("Syntax: npm start QUERY")
    else searchTotoz(process.argv[2])
     .then(tList => tList.map(t=>t.name._text).join('\n'))
     .then(console.log)
     .catch(err => console.error(err.message))

    Il ne faut pas oublier que l'utilisation de await n'empeche pas l'utilisation des blocs .then().
    D'un point de vue purement personnel, je trouve que c'est plus elegant et concis.
    Dans ce cas precis : search, then arranger l'affichage, then produire l'affichage.
    searchTotoz() devient egalement plus simple, puisqu'il n'y a plus de gestion de l'affichage ou de la sortie .

    Mais bon, il y a au moins 230 manieres differentes de le faire (full promises, full await en remplacant le .catch() par un try{} catch{}, l'utilisation du module http ou https natif de node, separer les trois responsabilitees en trois methodes distinctes, etc...).