Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

合并请求的同异步问题

  普通的合并请求只是用于把一堆零碎的请求给合并成一坨了,这件事虽然很有意义但本就不该由我们去实现,因为 HTTP/2 就已经做好了这件事。但是合并请求其实是很复杂的需求,请求中如果包含写操作的话就是顺序有关的,于是还要考虑同异步问题。
  这个坑让我想到了 gulp 的工作机制。gulp 把所有任务都以异步的形式处理,而且又把 run 方法给废弃掉了,这简直不让人玩嘛!后来找到一个 run-sequence 插件,就直接用这种方式解决了。
  run-sequence 的设计是接收多个参数,这些直接以参数形式传递的任务是同步顺序处理的,而参数可以是数组,数组中的任务列表则是异步处理的。我觉得这个 API 的设计很不错。我们的问题同样可以借鉴这种方式,让请求列表支持传入数组,列表本身同步处理,而数组内的异步处理。比如下面这样 [
  {method:"post",url:"/list"},[
    {method:"get",url:"/list/count"},
    {method:"get",url:"/list"}
  ]
];
  外层列表是顺序同步处理的,所以 post 先处理,完成后才执行后面的两个 get 请求,而这个两个 get 请求就没必要同步处理,所以放入一个子数组中让它们异步处理。
  其实这个设计也不算很好,只是一个能用的做法。如果有更好的做法也请大家分享下~
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^