js 实现同步
同步实现方法
JavaScript 是单线程语言,但可以通过多种方式实现同步操作。以下是常见的同步实现方法:
回调函数
使用回调函数可以确保代码按顺序执行。回调函数在异步操作完成后被调用,从而实现同步效果。
function fetchData(callback) {
setTimeout(() => {
callback('Data received');
}, 1000);
}
fetchData((data) => {
console.log(data);
});
Promise
Promise 提供更清晰的同步控制链,通过 then() 方法实现顺序执行。
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('Data received');
}, 1000);
});
}
fetchData()
.then(data => console.log(data));
async/await
async/await 是 Promise 的语法糖,使同步代码更易读。
async function getData() {
const data = await fetchData();
console.log(data);
}
getData();
事件监听
通过事件监听器实现同步,当特定事件触发时执行相应代码。
const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.on('dataReceived', (data) => {
console.log(data);
});
setTimeout(() => {
emitter.emit('dataReceived', 'Data received');
}, 1000);
同步 AJAX
虽然不推荐,但可以使用同步 XMLHttpRequest 实现阻塞式同步。
const xhr = new XMLHttpRequest();
xhr.open('GET', 'url', false); // 第三个参数设为 false 表示同步
xhr.send();
console.log(xhr.responseText);
注意事项
- 避免在主线程中使用同步操作,会导致界面冻结
- 现代 JavaScript 开发推荐使用 async/await 或 Promise
- 同步 AJAX 已不被推荐,可能会被浏览器标记为不推荐使用







