js实现同步
同步实现方法
JavaScript 是单线程语言,但可以通过多种方式实现同步操作。以下是常见方法:
回调函数 通过嵌套回调确保代码顺序执行,但可能导致回调地狱。
function asyncTask(callback) {
setTimeout(() => {
console.log('任务完成');
callback();
}, 1000);
}
asyncTask(() => {
console.log('回调执行');
});
Promise 使用 Promise 链式调用实现同步流程控制。
new Promise((resolve) => {
setTimeout(() => {
console.log('第一步');
resolve();
}, 1000);
}).then(() => {
return new Promise((resolve) => {
setTimeout(() => {
console.log('第二步');
resolve();
}, 1000);
});
});
async/await 最简洁的同步写法,需要配合 Promise 使用。
async function runTasks() {
await new Promise(resolve => setTimeout(() => {
console.log('任务1');
resolve();
}, 1000));
await new Promise(resolve => setTimeout(() => {
console.log('任务2');
resolve();
}, 1000));
}
runTasks();
事件循环控制 利用事件队列实现同步效果。

const eventQueue = [];
let isProcessing = false;
async function processQueue() {
if (isProcessing || eventQueue.length === 0) return;
isProcessing = true;
const task = eventQueue.shift();
await task();
isProcessing = false;
processQueue();
}
function addTask(task) {
eventQueue.push(task);
processQueue();
}
注意事项
- 避免阻塞主线程的同步操作
- 定时器精度不可靠
- 错误处理需要完善
- 考虑使用 Web Workers 处理耗时任务
以上方法可根据具体场景选择使用,async/await 是目前最推荐的同步写法。






