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

求这道笔试题的思路和写法?

求这道笔试题的思路和写法?

撒科打诨 2018-09-11 13:29:48
产品规模越来越大,前端交互越来越复杂,会导致请求越来越多。请使用javascript或者其方言, 完成一个 XHR proxy,用于代理异步请求:保持请求发起时间点,分布均匀,杜绝同一时间点多个请求一起发送可以限制请求频率,如最多 一秒5个请求可以限制最大连接数,如同时在线请求最多为 10个保证请求与回调按照顺序执行,如,一秒内做了请求 A,B,C,D,E,那么其callback执行也需按 照A,B,C,D,E的顺序执行,以保证依赖兼容移动端
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

一些思路:

  1. 可以采用循环定时器和令牌池依序处理请求,从而实现 分布均匀、请求频率限制和最大连接数等限制
    维护一个请求队列,队列是先进先出

定时器定时轮训令牌池,如果还存在令牌,则取出1个令牌,把执行请求队列中第一个,以致令牌池为空,则开始空循环,其中的请求频率是定时器间隔的倒数,令牌池的大小可以参考最大连接数。

  1. 对于回调依序执行,其实也是处理一个回调执行池,和维护一个头指针,并且在前面请求的时候传入调用id,比如从0开始的计数,所有的回调都不直接执行,而是压入回调执行池中,并触发一次遍历比较(因为池的大小受前面令牌池限制,所以遍历成本不高),然后比较头指针,如果回调id和头以致则执行,然后头指针自增,再遍历比较,直到没有需要执行的为止,这时就等待新的回调压入池。

  2. 这样的处理不区分pc和移动端的,可以纯javascript实现。


查看完整回答
反对 回复 2018-10-16
  • 1 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信