当前位置:首页 > JavaScript

js原生实现异步

2026-04-07 15:59:54JavaScript

原生 JavaScript 实现异步的方法

回调函数(Callback)

回调函数是 JavaScript 中最基础的异步实现方式。通过将函数作为参数传递给另一个函数,在异步操作完成后调用该回调函数。

function fetchData(callback) {
  setTimeout(() => {
    callback('Data fetched');
  }, 1000);
}

fetchData((data) => {
  console.log(data); // 输出: Data fetched
});

Promise

Promise 是 ES6 引入的异步解决方案,比回调函数更易于管理和避免回调地狱。

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
}

fetchData()
  .then((data) => {
    console.log(data); // 输出: Data fetched
  })
  .catch((error) => {
    console.error(error);
  });

async/await

async/await 是 ES8 引入的语法糖,基于 Promise,使异步代码看起来像同步代码。

async function fetchData() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
}

async function main() {
  try {
    const data = await fetchData();
    console.log(data); // 输出: Data fetched
  } catch (error) {
    console.error(error);
  }
}

main();

事件监听(Event Listeners)

通过事件监听实现异步,常用于 DOM 事件或自定义事件。

document.getElementById('button').addEventListener('click', () => {
  console.log('Button clicked');
});

setTimeout 和 setInterval

setTimeoutsetInterval 是 JavaScript 内置的定时器函数,用于延迟执行或周期性执行代码。

setTimeout(() => {
  console.log('Executed after 1 second');
}, 1000);

setInterval(() => {
  console.log('Executed every 1 second');
}, 1000);

XMLHttpRequest

XMLHttpRequest 是早期的 AJAX 实现方式,用于与服务器交互。

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data', true);
xhr.onload = function() {
  if (xhr.status === 200) {
    console.log(xhr.responseText);
  }
};
xhr.send();

Fetch API

Fetch API 是现代浏览器提供的更简洁的 AJAX 实现方式,基于 Promise。

fetch('https://api.example.com/data')
  .then((response) => response.json())
  .then((data) => console.log(data))
  .catch((error) => console.error(error));

Web Workers

Web Workers 允许在后台线程中运行脚本,避免阻塞主线程。

js原生实现异步

const worker = new Worker('worker.js');
worker.onmessage = (event) => {
  console.log('Message from worker:', event.data);
};
worker.postMessage('Start working');

总结

JavaScript 提供了多种原生异步编程方式,从早期的回调函数到现代的 async/await,开发者可以根据需求选择合适的方法。回调函数简单但易导致回调地狱,Promise 和 async/await 更易于管理,而 Fetch API 和 Web Workers 则适用于特定场景。

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现上传图片预览

js实现上传图片预览

使用FileReader实现图片预览 通过FileReader对象读取用户选择的图片文件,并将其显示在页面上。这种方法适用于现代浏览器。 // HTML部分 <input type="file…

js sort 实现

js sort 实现

数组排序基础方法 JavaScript 数组的 sort() 方法默认按照字符串 Unicode 码点顺序排序。直接调用时会将元素转为字符串再比较: const arr = [10, 2, 5, 1…