setTimeout() no parece funcionar, y he leído por qué y lo entiendo. Algo acerca de que es asíncrono, por lo que no retrasa la ejecución de las otras funciones en su código. Entonces, ¿cómo puedo hacer que espere unos segundos antes de enviar otro axios.request? Y la razón por la que pregunto sobre esto es porque la API que estoy solicitando solo permite una solicitud por segundo.
setTimeout(function () { axios.request(options).then(function (response) { for (let i = 0, l = response.data["result"].length; i < l; i++) { var obj = response.data.result; console.log(response.data.result[i].hash); } options.params.term = obj[1].hash options.params.func = 'dehash' setTimeout(function () { axios.request(options).then(function (response2) { message.reply(termargs + " passwords:" + '`' + JSON.stringify(response2.data.found) + '`'); }); }, 1250); options.params.term = obj[2].hash setTimeout(function () { axios.request(options).then(function (response3) { message.reply(termargs + " passwords:" + '`' + JSON.stringify(response3.data.found) + '`'); }); }, 1250); options.params.term = obj[3].hash setTimeout(function () { axios.request(options).then(function (response4) { message.reply(termargs + " passwords:" + '`' + JSON.stringify(response4.data.found) + '`'); }); }, 1250); }).catch(function (error) { message.reply("There was an error!" + '`' + 'Couldnt find user.' + '`'); console.log(error); }); }, 1250);Voy a reiterar el hecho de que soy nuevo en Javascript, y esto de la función de no esperar realmente hace que se me encojan los dedos de los pies, ya que lo uso todo el tiempo en el otro lenguaje de programación llamado Lua.
Una vez que esté ejecutando funciones asíncronas, necesitará usar async/await para hacer eso, setTimeout/Sleep no funcionará.
si desea que una solicitud finalice al pasar al siguiente código, puede hacerlo de esta manera:
async function funcName(){ const result = await axios.request(options).then(function (response2) { message.reply(termargs + " passwords:" + '`' + JSON.stringify(response2.data.found) + '`'); }); const result2 = await axios.request(options).then(function (response2) { message.reply(termargs + " passwords:" + '`' + JSON.stringify(response2.data.found) + '`'); }); } funcName();en este ejemplo primero terminará el resultado 1, luego irá a resolver el resultado 2...
Aquí están los documentos: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
Si desea utilizar setTimeout, debe buscar el hilo que he vinculado este hilo.
Si no te funciona, también puedes probar el método de suspensión.
sleep(ms).then(() => { })