quiero hacer una pausa de 1 segundo en una llamada de búsqueda y no funciona, el código es este:
async function sendStats(image, endimage, chat, id) { let finalimage = image + endimage; fetch(finalimage) .then(res => { if (res.ok) { res.body.pipe(fs.createWriteStream('./imgs/image.png')); bot.sendPhoto(chat, finalimage); } else { finalimage = image + "i" + endimage; fetch(finalimage) .then(res => { if (res.ok) { res.body.pipe(fs.createWriteStream('./imgs/image.png')); bot.sendPhoto(chat, finalimage); } else { bot.sendMessage(chat, "spiacenti ma non abbiamo un immagine di questo mostro :("); } }) } let mstr = mostri.filter(x => x.id == id); let desc = mstr[0].description; let elements = mstr[0].elements; await sleep(1000); bot.sendMessage(chat, desc); }) .catch((err) => { console.log(err) }); } function sleep(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); }quiero enviar el bot.sendmessage de desc después de sendphoto porque ahora está invertido y no me da mensajes de error
El problema con su código es que está utilizando la palabra clave await sin una función async .
Creo que es posible que te hayas confundido con esta función async al usar la palabra clave await con sleep() .
async function sendStats(image, endimage, chat, id) {} El problema es que su función sleep() está dentro de otra función, por lo que la función sendStats() no ayudará con su palabra clave await .
La solución para este problema es agregar una palabra clave async a la función en la que se encuentra la función sleep() .
fetch(finalImage) .then(async (res) => { await sleep(1000); });La línea 2 ha sido modificada.
La razón por la que esto funciona es porque la función en la que se encuentra la palabra clave await tiene la palabra clave async agregada a la función, lo que especifica que la función tiene una tarea asíncrona.
En conclusión, el problema con su código fue que olvidó agregar la palabra clave async a la función que await allí.