基于 Promise 封装同步处理下的延时器

2021-07-12  本文已影响0人  弹力盒
/**
 * 利用 Promise 函数
 * 封装自定义同步操作延时器
 * @param {延时时间} t
 */
const delay = (t = 1000) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve();
    }, t);
  });
};

/**
 * demo 1
 * ---------------------------------------------------
 * 以下区域会先打印 12345,在 3s 后打印 123
 * 利用立即执行函数来处理 async...await 的情况
 */
!(async function () {
  await delay(3000);
  console.log(123);
})();

console.log(12345);
// ---------------------------------------------------

/**
 * demo 2
 * +++++++++++++++++++++++++++++++++++++++++++++++++++
 * 在 for 循环里面利用 立即执行函数 + async...await... 延时处理
 */
for (let i = 0; i < 10; i++) {
  !(async function () {
    await delay(i * 1000);
    console.log(i);
  })();
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++
上一篇 下一篇

猜你喜欢

热点阅读