继发和并发的问题

继发和并发的问题

图片描述
老师,我还是有点不明白继发和并发的代码有什么区别?继发是直接用await获取了getJSON()返回的Promise对象的值,而并发却是先用变量接收getJSON()返回的Promise对象,再用await处理接收到的Promise对象。这两者有什么区别呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

首先明确什么叫做继发,它是指会有顺序的执行,比如说Ajax1发送了请求后得到了个数据,然后拿着这个数据在Ajax1里又发送了个请求,那么也就是说第二次发送请求是以第一次Ajax请求之后的前提下才发送的,它们之间是有关联的,第一次不发送,那么第二次是不会发送的。

并发:还是发送两个请求,那么它们之间是没有任何关联的,各自请求各自的,它们是同时的。

那么我们看代码,如下:

https://img1.sycdn.imooc.com//climg/63c9019409568bdc06490213.jpg

以上代码是指先通过getJson得到有关于`${url}js`的结果,然后在用这个结果进行下一次请求,那么第一次请求与第二次请求是关联的。有第一次才能有第二次。这里要注意一下await是会阻止代码的走法的,也就是说先走谁走完了以后在走谁。

https://img1.sycdn.imooc.com//climg/63c9026709d4714305940232.jpg

而并发的处理,是先得到两个的数据如jsPromise与jsonPromise都去做获取数据的操作了。两者属于一起(并行)的状态。然后在做await处理的。这里就是它们的区别,同学可能不太理解为什么不能用继发也能实现这样的情况,这是因为在正式项目中,可能会遇到这样的情况,比如需要同时获取多个接口的数据,如果是使用继发的话那么会遇到如网络延时的问题,导致渲染慢卡顿这样的情况,那么这个时候使用并发就更好了。

祝学习愉快!



  • 慕勒8540250 提问者 #1

    上面回答第二张图getJSON是并发的是不是因为它们是异步的,返回值为异步的Promise,所以才不会阻塞代码的执行?

    2023-01-19 20:24:48
  • 好帮手慕小李 回复 提问者 慕勒8540250 #2

    理解的是对的。祝学习愉快!

    2023-01-19 20:40:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师