当前位置:首页 > JavaScript

js实现等待

2026-04-04 00:56:27JavaScript

实现等待的几种方法

使用 setTimeoutsetInterval 进行延迟执行

setTimeout(() => {
  console.log('延迟1秒后执行');
}, 1000);

利用 Promiseasync/await 实现异步等待

function wait(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function delayedAction() {
  await wait(2000);
  console.log('等待2秒后执行');
}

使用 requestAnimationFrame 实现动画等待

function waitForAnimation(callback) {
  requestAnimationFrame(() => {
    requestAnimationFrame(callback);
  });
}

等待条件满足的实现

轮询检查条件

function waitUntil(condition, interval = 100) {
  return new Promise(resolve => {
    const check = () => {
      if (condition()) {
        resolve();
      } else {
        setTimeout(check, interval);
      }
    };
    check();
  });
}

使用 MutationObserver 等待DOM变化

function waitForElement(selector) {
  return new Promise(resolve => {
    if (document.querySelector(selector)) {
      return resolve();
    }

    const observer = new MutationObserver(() => {
      if (document.querySelector(selector)) {
        observer.disconnect();
        resolve();
      }
    });

    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
  });
}

高级等待模式

实现可取消的等待

function cancellableWait(ms) {
  let timeoutId;
  const promise = new Promise(resolve => {
    timeoutId = setTimeout(resolve, ms);
  });

  return {
    promise,
    cancel: () => clearTimeout(timeoutId)
  };
}

等待多个异步操作完成

js实现等待

async function waitForAll(promises) {
  await Promise.all(promises);
  console.log('所有异步操作已完成');
}

标签: js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…