当前位置:首页 > JavaScript

js 实现同步

2026-04-05 12:16:35JavaScript

同步实现方法

JavaScript 是单线程语言,但可通过以下方式模拟同步行为:

Promise 与 async/await

使用 async/await 语法糖简化异步代码的编写,使其看起来像同步代码:

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  console.log(data);
}

回调函数

通过嵌套回调实现顺序执行,但可能导致回调地狱:

function task1(callback) {
  setTimeout(() => {
    console.log('Task 1 done');
    callback();
  }, 1000);
}

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

task1(task2);

Generator 函数

利用 yield 暂停函数执行,实现同步效果:

function* generatorFunc() {
  yield console.log('Step 1');
  yield console.log('Step 2');
}

const gen = generatorFunc();
gen.next();
gen.next();

Web Workers

在后台线程运行耗时操作,避免阻塞主线程:

const worker = new Worker('worker.js');
worker.postMessage('start');
worker.onmessage = (e) => {
  console.log(e.data);
};

同步 AJAX(不推荐)

使用 XMLHttpRequest 的同步模式,会阻塞 UI:

js 实现同步

const xhr = new XMLHttpRequest();
xhr.open('GET', 'url', false); // 同步请求
xhr.send();
console.log(xhr.responseText);

注意事项

  • 避免使用同步 AJAX,会导致页面冻结
  • async/await 需要 Promise 支持
  • Generator 需配合执行器使用
  • Web Workers 不能直接访问 DOM

标签: js
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

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

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

链表实现js

链表实现js

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

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…