异步和单线程

1.首先我们来说一下什么是异步

举例:

console.log(1);
setTimeout(function(){
console.log(2);
},1000)
console.log(3);

你会发现,程序不是按部就班的先输出1,再输出2,最后输出3,而是先1再3最后2,这就是异步,程序各执行各的不会出现阻塞;对比同步应该更好理解

举例:

console.log(1);
alert(2);
console.log(3);

从这个例子可以看出只有在点击了弹出框的alert确认之后才会执行输出3,会出现程序阻塞。这也是同步和异步的区别,异步不会导致程序的阻塞,同步会导致程序的阻塞。

2、说一下我们什么时候需要异步,也就是我们程序什么时候不能阻塞。

在可能发生等待的情况下,就像上边提到的等待过程中,不能像alert一样阻塞其他程序的运行。

这就引出了什么情况下会发生等待呢?列出以下几点

a.定时任务,setTimeout,setInterval;

b.网络请求,ajax请求、动态img加载;

c.事件绑定。

3、我们来说一下什么是单线程

相信接触js的小伙伴都知道js是单线程的,所以需要异步,但是什么是单线程,有很多新入行的小伙伴可能不太清楚,还是先上例子

	console.log(1);
	setTimeout(function(){
		console.log(2)
	});
	console.log(3)
这里我们的执行顺序依然是1,3,2,即使定时是没有时间的因为他是异步所以会被先放到一遍,当其他函数执行完毕后,js会查看有没有异步的函数没有执行,然后依次执行,大家可以看出来,单线程就是只能一次干一件事情,不能同时干多件事情,只能一个一个来,就是将程序串起来,但是因为程序不能阻塞所以会先将异步放一边,当程序执行完毕后,再来查看异步是否能马上执行,或者延时执行,再依次执行。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值