当前位置:首页 > JavaScript

js原生实现异步

2026-02-02 22:11:21JavaScript

原生JavaScript实现异步的几种方式

JavaScript原生支持多种异步编程方式,主要包括回调函数、Promise、async/await以及事件监听等。

回调函数(Callback)

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

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

fetchData((data) => {
    console.log(data); // 1秒后输出"Data received"
});

Promise

Promise是ES6引入的异步解决方案,提供了更清晰的链式调用方式。

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

fetchData()
    .then(data => console.log(data))
    .catch(error => console.error(error));

async/await

ES2017引入的语法糖,使异步代码看起来像同步代码。

async function getData() {
    try {
        const data = await fetchData();
        console.log(data);
    } catch (error) {
        console.error(error);
    }
}

getData();

事件监听

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

const emitter = new EventTarget();

emitter.addEventListener('data', (e) => {
    console.log(e.detail);
});

setTimeout(() => {
    emitter.dispatchEvent(new CustomEvent('data', {
        detail: 'Data received'
    }));
}, 1000);

Generator函数

ES6引入的Generator函数可以实现更复杂的异步流程控制。

js原生实现异步

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

const gen = fetchData();
gen.next().value.then(data => console.log(data));

每种方式各有适用场景,现代JavaScript开发中推荐优先使用Promise配合async/await语法,能显著提高代码可读性和可维护性。

标签: js
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

jquery js

jquery js

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

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…