当前位置:首页 > 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 强制阻塞主线程,但会冻结页面。

js 同步实现

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实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…