Necesito descargar imágenes usando este paquete , pero a veces, una de estas imágenes está dañada. Aquí, una de las dos imágenes de muestra está dañada y estoy agregando Math.random() para simular este caso. Ahora estoy tratando de reiniciar el programa una vez que ocurre .catch() ; la cosa es que el programa se ejecuta infinitamente entonces. ¿Como puedo resolver esto?
mi código es:
let imgArrays = ["https://upload.wikimedia.org/wikipedia/commons/d/dc/Gigi1.jpg", "https://mms.businesswire.com/media/20211119005773/fr/929256/5/Aries_Linden_mechanical_completion_11-19-2021.jpg"] const runingImage = () => { const url = imgArrays[Math.floor(imgArrays.length * Math.random())]; const path = 'img/image.jpg' options = { url: url, dest: path } download.image(options) .then(({ filename }) => { console.log('Saved to', filename) }).catch( (err) => { console.log("running again"); return runingImage(); }) } runingImage();Cuando lo ejecuto, ahora solo me da:
running again running again ... Until I stops the console.Eliminar la declaración de devolución. Debería ser como:
let imgArrays = ["https://upload.wikimedia.org/wikipedia/commons/d/dc/Gigi1.jpg", "https://mms.businesswire.com/media/20211119005773/fr/929256/5/Aries_Linden_mechanical_completion_11-19-2021.jpg"] const runingImage = () => { const url = imgArrays[Math.floor(imgArrays.length * Math.random())] const path = 'img/image.jpg' options = { url: url, dest: path } download.image(options) .then(({ filename }) => { console.log('Saved to', filename) }).catch( (err) => { console.log("running again") }) } runingImage()Es lamentable que haya caído en una trampa en la que todos los programadores han caído (y siguen cayendo) en algún momento: faltan archivos/carpetas
cuando aún se encuentre en la etapa de desarrollo, siempre imprima errores en las sentencias catch. esto es lo que obtendría y eventualmente resolvería el problema usted mismo:
console.log(err)
ENOENT: no existe tal archivo o directorio, abra 'img/image.jpg'
también está este pequeño error que estás cometiendo. está creando una función de tipo void e intenta return su valor, que siempre está undefined
solución:
img en el directorio donde puso este archivo suyo.return dentro del bloque catch dejando solo runingImage();