当前位置: 首页 > news >正文

浏览器并发行为记录

使用nodejs + koa起一个服务,使请求延时返回。

服务端代码

/** 延时 */
exports.timeoutTestData = async function (ctx) {console.log('get query:', ctx.request.query);const query = ctx.request.query;let timeout = +query.timeout || 2000;await new Promise(resolve => {setTimeout(resolve, timeout);});ctx.body = {timeout,};
};

浏览器端

我通过浏览器js 循环同时调用5次

for (let i = 0; i < 5; i++) {fetch('http://localhost:8080/timeoutTest')
}

现象不符合预期

虽然请求都是同时发出的(因为5个请求同时展示在浏览器控制台中),但接口返回是有先后顺序的

调研

刚开始我怀疑的是koa框架,必须等前一个请求完成才接受下一个请求。但是node本身就是单线程异步模型,koa怎么可能要走多线程呢。

然后我打印了一下nodejs 的日志,发现服务端接收请求就是1个1个来的,得出问题应该在浏览器端。

最后根据

关于 koa 的并发问题,寻求多个请求同时处理的解决方案。 - CNode技术社区 (cnodejs.org)

 得知

hsiaosiyuan0 3楼•4 年前

@daGaiGuanYu 大概是浏览器有个某个优化的策略,对同一个 URL 的资源同一时间只进行一个活动请求。可以 terminal 中开几个 tab,用 curl http://127.0.0.1:3000/ 在几个 tab 中同时试一下

结论

在浏览器中,相同的请求并发只能等上一个相同请求结束后再请求下一个。

因此,使请求不相同即可,我在这几个请求参数中加上随机数。这样就可以并发了。

http://www.lryc.cn/news/38509.html

相关文章:

  • 工厂模式与抽象工厂
  • 什么?你不知道 ConcurrentHashMap 的 kv 不能为 null?
  • SQL复习04 | 复杂查询
  • 【面试题】Java面试题汇总(无解答)
  • C++---背包模型---收服精灵(每日一道算法2023.3.11)
  • day30_JS
  • 【Java学习笔记】19.Java 正则表达式(2)
  • 华为云arm架构轻松安装kubeedge
  • 33--Vue-前端开发-使用Vue脚手架快速搭建项目
  • TMS WEB Core开发Web应用优势说明
  • 人工智能简单应用1-OCR分栏识别:两栏识别三栏识别都可以,本地部署完美拼接
  • Gin框架路由拆分与注册详解析
  • 2020蓝桥杯真题凯撒加密 C语言/C++
  • taro+vue3小程序使用v-html渲染的内容为class写了样式无效
  • MASK-RCNN网络介绍
  • 导航技术调研(CSDN_0023_20221217)
  • 买卖股票的最佳时机 I II III IV
  • STM32—LCD1602
  • 英雄算法学习路线
  • 【设计模式】备忘录模式和迭代器模式
  • rapidcsv 写csv文件实例
  • 数据库--进阶篇--9--存储引擎
  • 物品的管理的隐私政策
  • 深度解析首个Layer3 链 Nautilus Chain,有何优势?
  • 配对变量t检验
  • 蓝桥杯三月刷题 第八天
  • EXCEL技能点3-常用技能1
  • 经典分类模型回顾16-AlexNet实现垃圾分类(Tensorflow2.0版)
  • vue3使用vuex
  • Java面向对象:抽象类的学习