博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步编程思想
阅读量:5901 次
发布时间:2019-06-19

本文共 976 字,大约阅读时间需要 3 分钟。

异步编程是我们JS中非常重要也是逼格非常高的编程方式

JS中的任务队列->不管是定时器还是我们的点击事件,我们都是事先把需要做的事情存储到任务队列中排队等待,当需要去执行的时候,我们在执行;

JS是单线程的->当我在主线程上执行一个任务的时候,只有当当前的任务执行完成了,才会在到任务队列中找下一个任务执行

例如: 先把任务队列中10ms后执行的这个任务拿出来执行,输出2,并且循环了1000次,当本次任务结束后(不管多长时间),在到任务队列中把15ms这个到时间的任务拿出来执行

 

1、什么是异步编程?什么是同步编程?

同步:当前JS主线程上的事情都完成了才能进行下一次事情
 
异步:当前的操作排列到任务队列中,不管是否到达了执行的条件,但是都是先把

JS主线程上的内容执行完成后才会到任务队列中找下一个任务执行

例如:葛琪下班回家煮咖啡,煮上后,需要一个小时才能煮好,但是这段时间,葛琪并没有等着,继续去读书了->异步 李兵下班回家也是煮咖啡,也是一个小时才能煮好,但是李兵做事比较专一,咖啡没煮好,就一直盯着煮,啥都不做,只有都煮好了才会去看书->同步

  • 1)所有的定时器都是异步编程
 
  • 2)所有的事件绑定都是异步编程的 每一次循环都把图片加载的这件事情放在任务队列中,for循环这个操作在JS主线程上执行,只有循环结束后(i=10),我们才到任务队列中把排队任务依次的执行,所以输出10次10
 
  • 3)在我们后期第七周给大家讲到的Ajax中也一般使用的是异步编程
 
  • 4)模棱两可的一个异步编程->回调函数

回调函数:把一个方法当做参数传递到另外一个函数中执行

 
我们之前接触的都有哪些是回调函数?
  1. 动画库

  

  1. ary.sort(function(a,b){return a-b});
  2. 定时器也是回调函数 window.setTimeout(function(){},10);
  3. DOM2事件 curEle.addEventListener("click",function(){},false);

回调函数也是非常非常的重要的思考题:在20151118这一天"4.回调函数.html"中有我们对于forEach和map的详细解读以及我们自己编写兼容的处理方式

转载于:https://www.cnblogs.com/Scar007/p/7717937.html

你可能感兴趣的文章
Centos7安装Gitlab10.0
查看>>
Windows Server 笔记(六):Active Directory域服务:域控制器安装
查看>>
discuz X3登录流程分析
查看>>
上传图片预览
查看>>
程序设计的一些原理
查看>>
lagp,lacp详解
查看>>
LVS之DR模式原理与实践
查看>>
struts2+extjs
查看>>
Apache2.4.33安装无systemctl/service status/state显示
查看>>
Docker的系统资源限制及验证
查看>>
c++ ios_base register_callback方法使用
查看>>
Java中为什么需要Object类,Object类为什么是所有类的父类
查看>>
angularjs-paste-upload
查看>>
linux基础命令 head
查看>>
objective c:import和include的区别, ""和<>区别
查看>>
The Shared folder with you
查看>>
poj 2234 Matches Game
查看>>
sax方式解析XML学习笔记
查看>>
Springboot配置(上)
查看>>
java--Eclipse for mac 代码提示(代码助手,代码联想)快捷键修改
查看>>