当前位置:首页 > JavaScript

js异步实现方式

2026-03-16 06:12:35JavaScript

回调函数(Callback)

回调函数是最基础的异步实现方式,将函数作为参数传递给另一个函数,在异步操作完成后调用。例如处理文件读取或网络请求:

fs.readFile('file.txt', 'utf8', function(err, data) {
    if (err) throw err;
    console.log(data);
});

Promise

Promise 对象代表异步操作的最终完成或失败,提供链式调用避免回调地狱。通过 thencatch 方法处理结果:

js异步实现方式

fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));

async/await

async/await 是建立在 Promise 之上的语法糖,使异步代码看起来像同步代码。async 函数返回 Promise,await 暂停执行直到 Promise 完成:

async function fetchData() {
    try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error('Error:', error);
    }
}

事件监听(Event Emitter)

通过事件驱动模型实现异步,常见于 Node.js 的 EventEmitter 类。监听特定事件并在触发时执行回调:

js异步实现方式

const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('data', (data) => {
    console.log('Received:', data);
});

emitter.emit('data', 'Sample data');

Generator 函数

Generator 函数通过 yield 暂停执行,与 Promise 结合可实现类似 async/await 的效果。需手动控制迭代器:

function* fetchData() {
    const response = yield fetch('https://api.example.com/data');
    const data = yield response.json();
    console.log(data);
}

const iterator = fetchData();
iterator.next().value
    .then(res => iterator.next(res).value)
    .then(data => iterator.next(data));

Web Workers

Web Workers 允许在后台线程运行脚本,避免阻塞主线程。通过 postMessageonmessage 通信:

// 主线程
const worker = new Worker('worker.js');
worker.onmessage = (e) => {
    console.log('Result:', e.data);
};
worker.postMessage('start');

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

标签: 方式js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js 实现分页

js 实现分页

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

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…