JavaScript Promise Sleep: методы отсрочки выполнения

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

Методы отсрочки выполнения:

  1. Использование setTimeout с промисами:
    function sleep(ms) {
     return new Promise(resolve => setTimeout(resolve, ms));
    }
    // Usage
    sleep(2000).then(() => {
     console.log('This code executes after a 2-second delay.');
    });
  2. Использование async/await с setTimeout:
    function sleep(ms) {
     return new Promise(resolve => setTimeout(resolve, ms));
    }
    // Usage
    async function delayedAction() {
     console.log('This code executes immediately.');
     await sleep(2000);
     console.log('This code executes after a 2-second delay.');
    }
    delayedAction();
  3. Использование специальной оболочки Promise:
    function sleep(ms) {
     return new Promise(resolve => {
       const timeoutId = setTimeout(() => {
         clearTimeout(timeoutId);
         resolve();
       }, ms);
     });
    }
    // Usage
    sleep(2000).then(() => {
     console.log('This code executes after a 2-second delay.');
    });
  4. Использование Promise.resolve с задержкой:
    function sleep(ms) {
     return Promise.resolve().then(() => new Promise(resolve => setTimeout(resolve, ms)));
    }
    // Usage
    sleep(2000).then(() => {
     console.log('This code executes after a 2-second delay.');
    });

Используя обещания в JavaScript, мы можем реализовать различные методы задержки выполнения кода. Независимо от того, предпочитаете ли вы использовать setTimeout, async/await, пользовательские оболочки Promise или Promise.resolve, каждый метод позволяет вам ввести задержку перед выполнением нужного кода. Поэкспериментируйте с этими методами, чтобы найти тот, который лучше всего соответствует вашим потребностям в различных сценариях.