Me sorprendió no poder encontrar un ejemplo de esto en ninguna parte, estoy seguro de que hay uno, pero parece que me está costando mucho encontrar uno.
Tengo una serie de enlaces... const array = ["www.google.com", "www.yahoo.com", "www.disney.com"];
y una función que toma un enlace y va a la página y hace algunas cosas y luego se cierra con una resolución. Quiero ejecutar la función usando cada elemento de la matriz, pero no quiero que las funciones se ejecuten todas a la vez.
array.forEach((item) => { functionThatUsesArrayData(item) })
pero esto ejecuta cada raspador a la vez.
En una función, me gustaría poder usar una matriz de enlaces y pasar cada enlace a la función, pero ejecutarlos uno a la vez ... así que cuando el primer enlace termine de rasparse, el siguiente elemento de la matriz se usará en un funcionar y ser raspado.
function(arrayItem).then(()=> function(arrayItem2)).then(()=> function(arrayItem3);
Algo como esto... Siento que debería poder hacer esto con promesas, pero simplemente no puedo parece darse cuenta.
Este es un pequeño ejemplo... el código real que tengo es un raspador web que tiene una serie de enlaces para raspar, pero no quiero tener 10 páginas de titiritero raspando a la vez, necesito que suceda una tras otra. ¿Algunas ideas? ¡Gracias!
async function functionThatUsesArrayData(link) { const chromeOptions = { headless: false, slowMo: 60, defaultViewport: null, args: ["--no-sandbox", "--disable-setuid-sandbox"], }; const promise = new Promise(async (resolve, reject) => { const browser = await puppeteer.launch(chromeOptions); const page = await browser.newPage(); await page.goto(link); await browser.close(); resolve(setTimeout(() => { console.log(" TASKS FINSIHED COMPLETED") }, 3000)) }) console.log(promise) } functionThatUsesArrayData()```