当前位置:首页 > JavaScript

js实现defer

2026-04-07 02:25:44JavaScript

defer 的实现原理

在 JavaScript 中,defer 通常指延迟执行某些操作,比如延迟加载脚本或延迟执行函数。原生的 HTML <script> 标签支持 defer 属性,但有时需要在纯 JavaScript 中实现类似功能。

使用 setTimeout 实现延迟执行

通过 setTimeout 可以简单实现函数的延迟执行。以下是一个基本示例:

function deferredFunction() {
    console.log('This function is deferred.');
}

setTimeout(deferredFunction, 1000); // 延迟 1 秒执行

封装通用的 defer 函数

可以封装一个通用的 defer 函数,接受回调函数和延迟时间作为参数:

function defer(callback, delay = 0) {
    setTimeout(callback, delay);
}

// 使用示例
defer(() => {
    console.log('Deferred execution after 1 second.');
}, 1000);

结合 Promise 实现异步 defer

如果需要更现代的异步控制,可以结合 PromisesetTimeout

function defer(delay = 0) {
    return new Promise(resolve => {
        setTimeout(resolve, delay);
    });
}

// 使用示例
defer(1000).then(() => {
    console.log('Deferred execution after 1 second.');
});

模拟脚本的 defer 属性

如果需要模拟 <script defer> 的行为(即延迟加载但不阻塞 DOM 解析),可以动态创建 <script> 标签并设置 defer 属性:

function loadScriptDeferred(src) {
    const script = document.createElement('script');
    script.src = src;
    script.defer = true;
    document.head.appendChild(script);
}

// 使用示例
loadScriptDeferred('path/to/script.js');

使用 requestAnimationFrame 实现帧级延迟

对于需要与浏览器渲染帧同步的延迟操作,可以使用 requestAnimationFrame

js实现defer

function deferFrame(callback) {
    requestAnimationFrame(callback);
}

// 使用示例
deferFrame(() => {
    console.log('Deferred until next animation frame.');
});

注意事项

  • setTimeout 的延迟时间并非精确,可能会受到浏览器主线程繁忙程度的影响。
  • 使用 Promise 的方案更适合现代异步编程,尤其是与 async/await 结合时。
  • 动态加载脚本时需注意跨域问题和加载顺序依赖。

标签: jsdefer
分享给朋友:

相关文章

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…