当前位置:首页 > JavaScript

原生js异步实现

2026-03-15 19:45:44JavaScript

原生 JavaScript 异步实现方法

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

回调函数(Callbacks)

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

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

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

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));

async/await

async/await 是 ES8 引入的语法糖,基于 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();

事件监听(Event Listeners)

通过事件监听实现异步,常用于 DOM 事件或自定义事件。

document.getElementById('button').addEventListener('click', () => {
    console.log('Button clicked');
});

setTimeout 和 setInterval

定时器函数用于延迟执行或周期性执行代码。

setTimeout(() => {
    console.log('Executed after 1 second');
}, 1000);

setInterval(() => {
    console.log('Executed every 1 second');
}, 1000);

Generator 函数

Generator 函数是 ES6 引入的另一种异步编程方式,通过 yield 暂停执行。

原生js异步实现

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

const generator = fetchData();
generator.next().value.then(data => console.log(data)); // 输出: Data received

选择合适的方法

  • 简单异步任务:回调函数或 Promise。
  • 复杂异步逻辑:async/await 或 Promise 链。
  • 事件驱动场景:事件监听。
  • 定时任务setTimeoutsetInterval
  • 高级控制流程:Generator 函数。

每种方法各有优劣,根据具体场景选择最合适的实现方式。

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现瀑布流

js实现瀑布流

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

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…