No sé si el problema es asíncrono, pero mi código no funcionó aquí. ¿Cómo hago para que vuelva a verificar cada segundo en el otro lado si la función if en dat().then es falsa? Actualmente, mi función dat() en settimeout no funciona. No esperaba que funcionara de todos modos
var dat = async () => { await document.querySelector("body").click(); } dat().then(() => { if(document.querySelector("body").className.indexOf("position") == -1){ console.log("right"); } else setTimeout(arguments.callee, 1000); }) dat();Aquí está mi intento de escribir su código con el bucle del bucle deseado indicado.
var dat = async () => { await document.querySelector("body").click(); } const unclicked = () => ( document.querySelector("body").className.indexOf("position") == -1); do { await dat(); if (unclicked()) console.log("right"); else setTimeout(arguments.callee, 1000); } while (true) Sin embargo, admito que estoy de acuerdo con el comentario de Kevin B en que setTimeout y `document.querySelector(...).click() no devuelven Promesas.
Si desea comentar, con gusto actualizaré la respuesta para reflejar la pregunta.