我正在创建一些到HTTP服务器的暂停连接(彗星,反向ajax等).它工作正常,但我看到浏览器只允许两个同时挂起到给定域的连接.因此,如果用户在浏览器的Tab1中查看我的网站,那么也尝试在Tab2中加载它们,他们已经用尽了两个允许的连接到我的网站.
我想我可以做一些通配域的东西,我有我的http服务器解析我的网站的任何地址,如:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
Run Code Online (Sandbox Code Playgroud)
所以:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
Run Code Online (Sandbox Code Playgroud)
所有仍然指向(www.example.com/webapp)但浏览器认为它们是不同的域,所以我没有遇到2连接限制.这是真的?
即使这是真的 - 所有域中每个浏览器的活动连接数是否有限制?假设我使用上面的方案 - 例如,Firefox在任何给定时间只允许24个并行连接吗?就像是:
1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!
Run Code Online (Sandbox Code Playgroud)
我刚刚选择了24个连接/ Firefox作为示例.
html web-applications http persistent-connection web-performance
我想澄清这一点,因为文件不太清楚;
Q1:是Promise.all(iterable)处理所有的承诺顺序或并行?或者,更具体地说,它是否相当于运行链式承诺
p1.then(p2).then(p3).then(p4).then(p5)....
Run Code Online (Sandbox Code Playgroud)
或者是一些其他类型的算法的所有p1,p2,p3,p4,p5,等是被称为在同一时间(并行)和结果尽快返回所有的决心(或一个拒绝)?
Q2:如果Promise.all并行运行,是否有一种方便的方式来运行可迭代的顺序?
注意:我不想使用Q或Bluebird,而是使用所有原生ES6规范.
如何编写限制Q promise并发的方法?
例如,我有一个方法spawnProcess.它返回一个Q承诺.
我希望一次生成的进程不超过5个,但对调用代码透明.
我需要实现的是一个带签名的函数
function limitConcurrency(promiseFactory, limit)
Run Code Online (Sandbox Code Playgroud)
我可以这样打电话
spawnProcess = limitConcurrency(spawnProcess, 5);
// use spawnProcess as usual
Run Code Online (Sandbox Code Playgroud)
我已经开始研究我的版本,但我想知道是否有人有一个我可以检查的简洁实现.
我有一个使用$ http.get进行大量异步调用的角应用程序,我在我的范围($ scope.count)中有一个count变量,用于跟踪我发出的请求数以及仍有多少请求.显然,我这样使用它:
我正在做很多请求,同时大约有2000个请求,但是$ scope.count值在所有请求完成后都不会回到0,它总是大于0(总是关闭1或2) ).我正在为$ http.get调用处理成功和错误事件,并且只要其中一个发生,我就会减少计数.
所以我想知道angular/javascript是否能很好地处理并发性?我想我正在运行增量操作这么多次(可能同时多次)并且$ scope.count的值变得过时/糟糕,因为两个操作可以同时修改变量.
javascript ×3
concurrency ×2
node.js ×2
promise ×2
angularjs ×1
asynchronous ×1
es6-promise ×1
html ×1
http ×1
q ×1