当前位置:首页 > JavaScript

js 同步实现

2026-02-01 13:30:10JavaScript

同步与异步的概念

JavaScript 默认是单线程且异步的,但可以通过特定方式实现同步风格的代码。同步代码会阻塞后续执行,直到当前操作完成。

回调函数实现同步

通过嵌套回调强制代码按顺序执行,但会导致“回调地狱”。

function task1(callback) {
  console.log("Task 1");
  callback();
}

function task2() {
  console.log("Task 2");
}

task1(task2); // 输出顺序: Task 1 → Task 2

Promise 链式调用

使用 Promise.then() 实现同步流程,避免回调嵌套。

function asyncTask() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log("Async Task");
      resolve();
    }, 1000);
  });
}

asyncTask()
  .then(() => console.log("Next Step"));

async/await 语法

通过 async/await 以同步写法处理异步操作,需在函数前标记 async,并用 await 等待 Promise 完成。

async function runTasks() {
  await asyncTask(); // 等待异步任务完成
  console.log("After Async Task");
}

runTasks();

同步阻塞示例(不推荐)

使用 while 循环或 Date 强制阻塞主线程,但会冻结页面。

function syncDelay(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {}
  console.log("Delay Complete");
}

syncDelay(2000); // 阻塞2秒

注意事项

  • 避免在主线程中使用同步阻塞,影响用户体验。
  • 优先选择 async/await 或 Promise 链式调用实现逻辑同步。
  • 浏览器环境中,同步 XMLHttpRequest 已被弃用,推荐使用 fetchaxios 的异步方式。

js 同步实现

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…