Dar*_*ryn 5 concurrency promise angularjs angular-promise
我该怎么做$q.all但限制同时执行多少个promises?
我的问题就像我如何限制Q promise并发?
我希望一次产生的过程不超过5个
对于另一个问题,接受的答案是为了与Q一起工作而承诺的图书馆.但我特别感兴趣的是Angular的解决方案,而不是.$qQ
背景:问题正在解决:
我有两个步骤下载的文件:a)获取URL b)下载文件.
浏览器限制了可以同时检索多少文件,因此当直接使用promises时$q.all会触发所有下载,只有 N会立即发生,例如Chrome中的6,而其余文件会延迟.(请参阅浏览器中的Max并行http连接?)
问题是URL已过期,因此当浏览器执行第 N + 1次 文件下载时,URL不再有效.
所以我想做的事情throttled.all(6, promises)而不是$q.all(promise)
我认为你可以做一些递归的事情。
这将允许您仅使用$q. 你只需要有一个你将使用的列表,无论如何你都需要它$q.all
self.MakeCall = function(theList, chunkSize){
//Split list into what will be processed and what should be held
var processList = theList.slice(0,chunkSize);
var holdList = theList.slice(chunkSize);
return $q.all(processList).then(function(result) {
//If holdList is empty you are finished
if(holdList <= 0) {
return result;
}
else {
//More items make recursive call to process next set
return self.MakeCall(holdList, chunkSize);
}
});
};
//Initialize Recursive call
self.MakeCall(self.contacts);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |