2026-10-22 08:54:02
同步 JavaScript 是逐行顺序执行的代码模式,异步 JavaScript 是允许任务在后台运行、不阻塞主线程的代码模式。以下是具体说明:
同步 JavaScript简单循环(如 for 循环)
标准同步函数调用
执行方式:通过回调、Promise 或 async/await 等机制,允许任务在后台运行,主线程继续执行其他任务。
非阻塞性:不阻塞后续代码,任务完成后通过回调或事件通知结果。
实现机制:
回调函数:将函数作为参数传递,在异步操作完成后调用。
Promise:封装异步操作,提供 .then() 和 .catch() 方法处理结果或错误。
async/await:基于 Promise 的语法糖,用同步方式编写异步代码。
典型场景:
网络请求(如 fetch)
文件读写
定时器(如 setTimeout)
示例 1(setTimeout):
console.log("start");setTimeout(() => { console.log("timeout completed");}, 2000); // 2秒后执行console.log("end");输出:
startendtimeout completed特点:setTimeout 不会阻塞后续代码,回调函数在指定时间后执行。
示例 2(Promise):
const fetchData = new Promise((resolve) => { setTimeout(() => { resolve("data fetched successfully!"); }, 2000);});console.log("fetching data...");fetchData.then((data) => console.log(data));输出:
fetching data...data fetched successfully!特点:Promise 封装异步操作,通过 .then() 处理结果。
示例 3(async/await):
const fetchData = () => { return new Promise((resolve) => { setTimeout(() => { resolve("data fetched successfully!"); }, 2000); });};const fetchAsyncData = async () => { console.log("fetching data..."); const data = await fetchData(); console.log(data);};fetchAsyncData();输出:
fetching data...data fetched successfully!特点:async/await 用同步语法简化异步代码,await 会暂停函数执行直到 Promise 完成。
同步:严格按代码顺序执行。
异步:任务可拆分为“发起”和“回调”两部分,主线程继续执行后续代码。
同步:阻塞后续代码。
异步:非阻塞,适合高并发场景。
同步:简单直接,但易导致性能问题。
异步:需回调或 Promise 链,async/await 可优化可读性。
理解同步与异步的区别是构建高效 JavaScript 应用的基础,合理选择模式可显著提升用户体验。