异步编程总结

一:同步与异步1:同步Synchronization。指同一时间只能做一件事,也就是说一件事做完了才能做另一件事。例:let ary = [ ]; for(let i = 0;i < 100;i++){ ary[i] = i; } console.log(ary);1-1:同步优点:做任何事情都是依次执行,井然有序,不会存在大家同时抢一个资源的问题。1-2:同步缺点:由于是依...
摘要由CSDN通过智能技术生成

一:同步与异步

1:同步

Synchronization。指同一时间只能做一件事,也就是说一件事做完了才能做另一件事。
例:
let ary = [ ]; for(let i = 0;i < 100;i++){ ary[i] = i; } console.log(ary);

1-1:同步优点:
做任何事情都是依次执行,井然有序,不会存在大家同时抢一个资源的问题。
1-2:同步缺点:
由于是依次进行,假如其中一个步骤花的时间较长,那么后续动作就会等待它的完成,从而影响效率。

2:异步

概念
可以让很多操作同时进行。
什么时候使用异步?
一段代码需要花费时间时,就使用异步。
什么操作比较花费时间?
I/O的操作(文件的读取和写入),网络请求的时候
2-1:异步的实现:
<1>多线程:一个应用程序中的执行任务,每个应用程序至少会有一个线程,它被称为主线程。如果想实现异步处理,就可以通过开启多个线程,这些线程可以同时执行。(属于阻塞式)

<1-1>阻塞式:虽然我们可以通过开启多个线程来同时执行很多任务,但是每个任务中的代码仍然是同步的,当某个任务代码执行时间过长,也只会影响到当前线程的代码,而其他线程的代码不会受到影响。

<2>单线程非阻塞式:相当于只有一个线程,然后把耗时的一些操作分成两部分,先把快速能做的事情做了,这样保证它不会阻塞其他代码的运行。剩下耗时的部分在单独进行。

二:回调函数实现异步

1:JavaScript引擎是以单线程的机制来运行代码的。所以,JavaScript中想要实现异步就只有采用单线程非阻塞式的方式。

例:早期,单线程非阻塞通过回调函数来实现:
console.log("start"); setTimeout(function(){ console.log("timeout"); },5000); console.log("end");
结果:
start end // 等待5秒 timeout

2:回调函数实现异步的缺陷

就是容易产生回调地狱

2-1:产生原因:
例:
setTimeout(function () { console.log("1"); setTimeout(function () { c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值