JS的同步与异步

  我们都知道JS的代码是同步执行的,也就是按照我们所书写的顺序一一执行,但是有3个特殊,他们属于异步执行:计时器(setInterval,setTimeout),事件(onclick,onkeydown等),ajax;接下来我们分析比较一下同步执行的代码和异步执行的代码之间的一些执行逻辑;

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     
11 </body>
12 </html>
13 <script>
14 //同步执行我们就拿console.log("我是同步执行");举例,异步执行我们拿延时定时器举例:
15     setTimeout(function(){
16         console.log("我是异步执行1");
17     },2000);
18     setTimeout(function(){
19         console.log("我是异步执行2");
20     },1000);           //经过1秒(1000ms)以后,"我是异步执行2"被同时打印出来;
21                         //再经过1秒,"我是异步执行2"被打印出来。
22 //多个异步执行代码执行的时候,谁快先执行谁;接下来看看他们是否互相影响:
23     setTimeout(function(){
24             console.log("不定义变量a即将报错" + a);
25         },1000);
26     setTimeout(function(){
27         console.log("我是异步执行2");
28     },1000);   
29     console.log("我是同步执行")        //先打印"我是同步执行";经过1秒(1000ms)以后,先打印报错(a is not defined);然后"我是异步执行2"被同时打印出来;这个先后顺序是由延时定时器的时间决定的,但是我们可以发现即便之前的异步代码有报错,并不影响之后代码的执行;
30 //我们接下来测试同步执行代码报错对后面的影响:
31     console.log("不定义变量a即将报错" + a);
32     setTimeout(function(){
33         console.log("我是异步执行1")  
34         },1000);
35     setTimeout(function(){
36         console.log("我是异步执行2");
37     },1000);   
38     console.log("我是同步执行")      //此段代码只会报错(a is not defined);说明同步执行代码一旦报错,后续代码将不再执行;这也是同步代码和异步代码很大的区别;
39 //注:若console.log(a);var a = 10;此时会打印"undefined";并不是报错,需另当别论;这里涉及到变量提升,详情可见另一篇文章说明;
40          
41 </script>
既然有异步代码,我们也可以利用Promise方法让异步代码来同步执行,详见:https://www.cnblogs.com/XieYFwin/p/10850037.html

 

转载于:https://www.cnblogs.com/XieYFwin/p/10852569.html

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值