是否有一种方法/pattern来实现let res=promise.all([...p],limit)
?
res
应在所有p
限制=3
promise应并行运行limit
解析器并行运行。我想出了创建n=limit
链的想法,这些链并行运行,只要有promise就追加:
let promises = [];
for(let i=0; i<11; i++) promises[i] = () => {
console.log('Construct:',i);
return new Promise(resolve => {
setTimeout(function() {
console.log('Resolve:',i);
resolve(i);
}, Math.round(Math.random() * (2000 - 500) + 2000));
});
}
function parallelLimit(promiseFactories, limit) {
let result = [];
let cnt = 0;
function chain(promiseFactories) {
if(!promiseFactories.length) return;
let i = cnt++; // preserve order in result
return promiseFactories.shift()().then((res) => {
result[i] = res; // save result
return chain(promiseFactories); // append next promise
});
}
let arrChains = [];
while(limit-- > 0 && promiseFactories.length > 0) {
// create `limit` chains which run in parallel
arrChains.push(chain(promiseFactories));
}
// return when all arrChains are finished
return Promise.all(arrChains).then(() => result);
}
parallelLimit(promises, 4).then(console.log);
Promise的限制 本节中我们将要讨论的许多细节已经在这一章中被提及了,但我们将明确地复习这些限制。 顺序的错误处理 我们在本章前面的部分详细讲解了Promise风格的错误处理。Promise的设计方式——特别是他们如何链接——所产生的限制,创建了一个非常容易掉进去的陷阱,Promise链中的错误会被意外地无声地忽略掉。 但关于Promise的错误还有一些其他事情要考虑。因为Promise链只不
可能有助于为这个问题提供一点背景上下文:我正在构建一个角服务,它有助于将多部分表单数据(mp4视频)块上传到云中的存储服务。 我试图限制同时发生的未解决promise(chunk data请求)的数量。我使用的是侦听正在解析的所有区块上载promise,然后在发生这种情况时返回异步调用(以完成文件)。我认为我的算法遇到了竞争条件,因为在为具有大量块的文件安排所有作业之前被调用,但在较小的文件中成功
有没有办法限制节点js中一次执行的并发Qpromise的数量? 我正在构建一个web scraper,它必须请求并解析3000多个页面,并且在没有限制的情况下,我提出的一些请求没有及时响应,因此连接停止,所需的响应(html代码)变得不可用。 为了解决这个问题,我发现限制请求的数量可以解决我的问题。 我曾尝试过以下方法,但均无效: Qpromise中的并发限制-节点 我需要请求一个URL数组,一次
我正在寻找一个promise函数包装,它可以在给定的promise运行时限制/节流,以便在给定的时间只运行该promise的一组数量。 在以下情况下,不应同时运行,它们应按照先到先得的顺序一次运行一个。 关于如何设置这样的队列有什么想法吗? 我有一个来自奇妙的的“去盎司”功能。我需要修改它,以限制基于自身执行的promise,而不是延迟。
我使用ES6承诺来管理我的所有网络数据检索,有些情况下我需要强制取消它们。 基本上,这个场景是这样的,我在UI上有一个预先输入的搜索,其中请求被委托给后端,必须根据部分输入执行搜索。虽然这个网络请求(#1)可能需要一点时间,但用户继续键入,最终触发另一个后端调用(#2) 在这里,#2自然优先于#1,所以我想取消承诺包装请求#1。我在数据层中已经有了一个所有承诺的缓存,所以理论上我可以在尝试提交#2
请问一下,在看到一个方法的定义时候: 有返回:Promise<IFileStatResult[]> 请问这个泛型的限制:<IFileStatResult[]> 是限制Promise的什么?限制它的返回信息还是处理的什么呢? === 我找到一个示例:看起来是限制入参。