为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬指点哈!被问到通过什么做到并发请求? 请求难道不是异步的吗?

求大佬指点哈!被问到通过什么做到并发请求? 请求难道不是异步的吗?

qq_花开花谢_0 2019-08-21 13:33:19
面试题被问到通过什么做到并发请求?请求难道不是异步的吗?请求多了自然就并发了啊,这是什么意思?
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

简单来说,不能这么理解
单线程任务我们一般称之为串行任务,当前任务执行完之前不能执行第二个任务;
与之对应的就是并行任务,或者简单理解为并发任务,解决了单线程任务执行的瓶颈,提高了执行速度;
异步呢,一般是针对单线程模型,由于任务链路过长造成的瓶颈,从而将任务拆分,缩短了任务时间,由两个或多个线程完成,但是还是一个任务,一般是利用一些中间件,如kafka
一个简单的例子就是ajax当async=false时,为单线程串行任务,由于存在网络io,当前线程将被挂起,发生阻塞,阻塞期间浏览器?;当async=true时,将任务拆分,http发送完毕之后线程立即返回并执行下一个任务,请求返回值后由另一个线程调用callback,将结果回填http2中还利用复杂一点的多路复用技术,用以提升整体性能,具体参考http2
前一个通常我们称之为同步阻塞,后一个称之为异步非阻塞,区别就是充分利用了cpu,没有性能浪费
                            
查看完整回答
反对 回复 2019-08-21
?
SMILET

TA贡献1796条经验 获得超4个赞

并发和异步不是一个相关的概念吧,你想同时发起两个异步请求,他们肯定是并发发起,如果把第二个放到第一个的回调里,这就是串行的了。如果用ESnext里的await就需要用promise.all来实现并发了,因为await是等第一个请求结束才会走下一个的。纯属个人意见。
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 379 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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