Спящий режим JavaScript: различные методы приостановки выполнения кода

В JavaScript нет встроенной функции сна, которая приостанавливает выполнение кода на определенное время. Однако добиться подобного эффекта можно, используя различные методы. Вот несколько распространенных подходов:

  1. setTimeout: вы можете использовать функцию setTimeout, чтобы задержать выполнение кода на указанное количество миллисекунд. Например, чтобы сделать паузу на 1 секунду, вы можете использовать setTimeout с функцией обратного вызова:
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
async function yourFunction() {
  // Code before sleep
  console.log("Before sleep");
  await sleep(1000); // Pause for 1 second
  // Code after sleep
  console.log("After sleep");
}
yourFunction();
  1. Обещания и async/await. Вы можете создать собственную функцию сна, используя обещания и синтаксис async/await. Вот пример:
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
async function yourFunction() {
  // Code before sleep
  console.log("Before sleep");
  await sleep(1000); // Pause for 1 second
  // Code after sleep
  console.log("After sleep");
}
yourFunction();
  1. API Web Worker. Если вы работаете в среде браузера, вы можете использовать Web Worker для запуска кода в фоновом режиме, не блокируя основной поток. Вот пример:
function sleep(ms) {
  return new Promise(resolve => {
    const worker = new Worker(URL.createObjectURL(new Blob([`
      self.onmessage = function(e) {
        setTimeout(function() {
          self.postMessage('Done');
        }, e.data);
      };
    `])));
    worker.onmessage = function(e) {
      resolve();
      worker.terminate();
    };
    worker.postMessage(ms);
  });
}
async function yourFunction() {
  // Code before sleep
  console.log("Before sleep");
  await sleep(1000); // Pause for 1 second
  // Code after sleep
  console.log("After sleep");
}
yourFunction();

Это всего лишь несколько примеров того, как можно добиться спящего режима в JavaScript. Не забудьте выбрать метод, который лучше всего подходит для вашего конкретного случая использования.