当前位置:首页 > JavaScript

原生js异步实现

2026-04-07 13:09:14JavaScript

原生 JavaScript 异步实现方法

原生 JavaScript 提供了多种方式实现异步编程,以下是常见的几种方法:

回调函数(Callbacks)

回调函数是最基础的异步实现方式,将函数作为参数传递给另一个函数,在异步操作完成后调用。

function fetchData(callback) {
    setTimeout(() => {
        callback('Data received');
    }, 1000);
}

fetchData((data) => {
    console.log(data); // 输出: Data received
});

缺点:容易导致“回调地狱”(Callback Hell),代码难以维护。

Promise

Promise 是 ES6 引入的异步解决方案,通过链式调用避免回调嵌套。

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('Data received');
        }, 1000);
    });
}

fetchData()
    .then((data) => {
        console.log(data); // 输出: Data received
    })
    .catch((error) => {
        console.error(error);
    });

特点

原生js异步实现

  • 支持链式调用(.then())。
  • 可以通过 .catch() 统一处理错误。

async/await

ES2017 引入的语法糖,基于 Promise,使异步代码更像同步代码。

async function fetchData() {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve('Data received');
        }, 1000);
    });
}

async function main() {
    try {
        const data = await fetchData();
        console.log(data); // 输出: Data received
    } catch (error) {
        console.error(error);
    }
}

main();

优点

  • 代码更简洁,易于阅读。
  • 错误处理通过 try/catch 实现。

EventEmitter

通过事件监听机制实现异步,常用于浏览器事件或 Node.js 的 events 模块。

原生js异步实现

// 浏览器示例
document.addEventListener('click', () => {
    console.log('Clicked!');
});

适用场景:用户交互、自定义事件驱动逻辑。

Web Workers

用于在后台线程执行耗时任务,避免阻塞主线程。

// 主线程代码
const worker = new Worker('worker.js');
worker.postMessage('Start task');
worker.onmessage = (e) => {
    console.log(e.data); // 接收 Worker 返回的结果
};

// worker.js
self.onmessage = (e) => {
    const result = e.data + ' processed';
    self.postMessage(result);
};

注意:Worker 线程无法直接操作 DOM。

总结

  • 简单异步任务:回调函数或 Promise。
  • 复杂异步逻辑:async/await。
  • 事件驱动场景:EventEmitter。
  • 高性能计算:Web Workers。

根据实际需求选择合适的方法,优先推荐 Promise 和 async/await。

标签: js
分享给朋友:

相关文章

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现论坛

js实现论坛

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

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…