当前位置:首页 » 《随便一记》 » 正文

javascript 异步操作有哪些方法( 9种 )

17 人参与  2024年03月23日 18:50  分类 : 《随便一记》  评论

点击全文阅读


还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述

文章目录

1. 回调函数2.事件监听3. Promise 对象4. Generator 函数与 yield5. async/await6. 微任务与宏任务7. Web Workers8. Service Workers9. requestAnimationFrame


异步操作允许程序在等待耗时操作(如I/O操作、网络请求、长时间计算等)的过程中,主线程可以执行其他任务,从而提高了程序的响应性和效率。异步编程对于构建高性能和用户友好的web应用、桌面应用和移动应用至关重要。

在这里插入图片描述

JavaScript 中异步执行操作可以通过多种机制来实现,这些方法包括但不限于以下几个主要类别:

1. 回调函数

最基础的异步编程模型,通常用于处理事件监听、定时器等场景。
setTimeout(function() {  console.log('异步操作完成');}, 1000);// AJAX 请求中的回调函数示例fetch('/api/data')  .then(response => response.json())  .then(data => console.log(data));

2.事件监听

利用事件循环机制,通过addEventListener等方式监听特定事件的发生。
element.addEventListener('click', function handleClick() {  console.log('点击事件已触发');});

3. Promise 对象

提供了一种更优雅的方式来组织异步操作,能够避免回调地狱。
function asyncOperation() {  return new Promise((resolve, reject) => {    setTimeout(() => {      resolve('异步操作已完成');    }, 1000);  });}asyncOperation().then(result => console.log(result));

4. Generator 函数与 yield

ES6 中引入,结合 yield 关键字和 Iterator 可以暂停和恢复函数的执行。
function* asyncGen() {  const data = yield fetch('/api/data').then(r => r.json());  console.log(data);}const gen = asyncGen();gen.next().value.then(result => gen.next(result));

5. async/await

ES7 引入,基于 Promise 封装,提供了更接近同步编程体验的语法糖。
async function main() {  const data = await fetch('/api/data');  const jsonData = await data.json();  console.log(jsonData);}main();

6. 微任务与宏任务

JavaScript 运行环境如浏览器环境中,存在微任务队列(MutationObserver、Promise.then 等)和宏任务队列(setTimeout、setInterval、I/O、UI 渲染等)。宏任务结束后,引擎会检查微任务队列并执行所有微任务,然后再进入下一轮事件循环。

7. Web Workers

在浏览器环境下,可以创建独立于主线程运行的工作线程,用于执行耗时任务,它们与主线程通过消息传递机制通信,实现异步执行。

8. Service Workers

一种特殊的 Web Worker,可以在后台线程中拦截网络请求、缓存数据以及推送通知等,同样实现了异步操作。

9. requestAnimationFrame

用于动画或DOM重绘相关的异步任务,会在浏览器下次重绘之前调用回调函数。

以上都是JavaScript中实现异步执行的不同方式,根据实际应用场景选择合适的异步处理机制至关重要。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/84519.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1