js 实现同步
同步与异步的基本概念
JavaScript 默认是单线程且异步的,但可以通过特定方式实现同步行为。同步代码会阻塞后续执行,直到当前操作完成,而异步代码允许其他任务在等待时继续执行。
使用回调函数实现同步
回调函数可以确保代码按顺序执行,但嵌套过多会导致“回调地狱”。

function task1(callback) {
console.log("Task 1");
callback();
}
function task2() {
console.log("Task 2");
}
task1(task2);
使用 Promise 链式调用
Promise 的 .then() 方法可以按顺序执行异步操作,避免回调嵌套。

function asyncTask1() {
return new Promise(resolve => {
console.log("Task 1");
resolve();
});
}
function asyncTask2() {
console.log("Task 2");
}
asyncTask1().then(asyncTask2);
使用 async/await
async/await 是更简洁的同步写法,底层基于 Promise。
async function runTasks() {
await new Promise(resolve => {
console.log("Task 1");
resolve();
});
console.log("Task 2");
}
runTasks();
使用同步阻塞方法(不推荐)
某些 API 提供同步版本(如 fs.readFileSync),但会阻塞主线程。
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
注意事项
- 同步操作可能影响性能,尤其是在浏览器中会导致界面冻结。
- 优先使用
async/await或 Promise 处理异步逻辑,避免阻塞。 - Node.js 中部分模块提供同步 API,但需谨慎使用。






