js 如何实现异步
异步实现方法
JavaScript 中实现异步操作主要通过以下几种方式:
Promise
Promise 是 ES6 引入的异步编程解决方案,用于处理异步操作。它有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。

const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data fetched');
}, 1000);
});
};
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));
async/await
async/await 是 ES7 引入的语法糖,基于 Promise,使异步代码看起来像同步代码。
const fetchData = async () => {
try {
const response = await new Promise(resolve => {
setTimeout(() => {
resolve('Data fetched');
}, 1000);
});
console.log(response);
} catch (error) {
console.error(error);
}
};
fetchData();
回调函数
回调函数是传统的异步处理方式,将函数作为参数传递给另一个函数,在异步操作完成后调用。

const fetchData = (callback) => {
setTimeout(() => {
callback('Data fetched');
}, 1000);
};
fetchData(data => console.log(data));
EventEmitter
Node.js 中的 EventEmitter 类允许对象触发和监听事件,适用于事件驱动的异步编程。
const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('dataFetched', data => console.log(data));
setTimeout(() => {
emitter.emit('dataFetched', 'Data fetched');
}, 1000);
Generator 函数
Generator 函数是 ES6 引入的另一种异步解决方案,通过 yield 暂停函数执行。
function* fetchData() {
yield new Promise(resolve => {
setTimeout(() => {
resolve('Data fetched');
}, 1000);
});
}
const generator = fetchData();
generator.next().value.then(data => console.log(data));
选择建议
- 现代 JavaScript 开发推荐使用 Promise 或 async/await,代码更简洁易读。
- 回调函数适用于简单场景,但容易导致回调地狱。
- EventEmitter 适合事件驱动的场景。
- Generator 函数在特定场景下有用,但不如 async/await 直观。






