How do I wait for javascript code to finish working?

Support
  • I am executing code inside the browser using the javascript cube, how can I make the script continue its work only after the javascript code finishes?

  • @danil140 said in How do I wait for javascript code to finish working?:

    I am executing code inside the browser using the javascript cube, how can I make the script continue its work only after the javascript code finishes?

    Use asynchronous code, the action will wait for completion. For example:

    await new Promise(r => setTimeout(r, 5000));
    
  • I tried applying this using ChatGPT, but it didn't work for me. Can you tell me where to put this code to make my code work?

    // Функция для эмуляции нажатия мыши внутри элемента <canvas data-sentry-element="Stage">
    function simulateMouseClickInCanvas() {
      const canvas = document.querySelector('canvas[data-sentry-element="Stage"]');
      if (!canvas) {
        console.error("Элемент <canvas> не найден.");
        return;
      }
    
      const rect = canvas.getBoundingClientRect();
    
      // Выбираем случайные координаты внутри элемента <canvas>
      const randomX = Math.random() * rect.width + rect.left;
      const randomY = Math.random() * rect.height + rect.top;
    
      // Создаём события мыши
      const mouseDownEvent = new MouseEvent("mousedown", {
        bubbles: true,
        cancelable: true,
        clientX: randomX,
        clientY: randomY,
      });
    
      const mouseUpEvent = new MouseEvent("mouseup", {
        bubbles: true,
        cancelable: true,
        clientX: randomX,
        clientY: randomY,
      });
    
      const clickEvent = new MouseEvent("click", {
        bubbles: true,
        cancelable: true,
        clientX: randomX,
        clientY: randomY,
      });
    
      // Эмулируем события
      canvas.dispatchEvent(mouseDownEvent);
      canvas.dispatchEvent(mouseUpEvent);
      canvas.dispatchEvent(clickEvent);
    }
    
    // Функция для выполнения кликов с рандомной задержкой
    function performRandomClicksInCanvas(maxClicks) {
      let clicksCount = 0;
    
      function clickWithRandomDelay() {
        if (clicksCount >= maxClicks) {
          console.log("Все клики выполнены");
          return;
        }
    
        const delay = Math.random() * (2000 - 100) + 100; // Рандомная задержка от 0.1 до 2 секунд
        setTimeout(() => {
          simulateMouseClickInCanvas();
          clicksCount++;
          console.log(`Клик ${clicksCount} выполнен (задержка: ${Math.round(delay)} мс)`);
          clickWithRandomDelay(); // Рекурсивный вызов для следующего клика
        }, delay);
      }
    
      clickWithRandomDelay();
    }
    
    // Запуск выполнения 10 кликов
    performRandomClicksInCanvas(10);