我一直在寻找,并找到了一些变化,但没有找到任何符合我的需求。下面是我想弄清楚的伪代码:我不明白,你不能阻止同步码等待异步和我尝试了好几种变化等待x个承诺完成以产生新承诺的良好模式是什么?
var itemsUploading = 0;
const maxUploads = 10;
function uploadAll(items){
var promises = [];
items.forEach(function(item){
/* Here is where I want to wait for itemsCurrentlyUploading < maxUploads */
itemsUploading++;
promises.push(upload(item));
}
return Promise.all(promises);
}
function upload(item){
return new Promise(function(resolve, reject){
/*Item upload logic here */
})
.then(function(response){
itemsUploading--;
});
}
。我认为setTimeout
是我可以用来做到这一点的东西,但我不太明白必要的逻辑。任何和所有的帮助将不胜感激,如果还有其他事情可以编辑,以帮助某人更好地理解问题,请让我知道,谢谢!
你需要阅读关于链接Promise和Deferred调用,这里的关键字是'.then()' – rorschach
看看[this](http://stackoverflow.com/a/39197252/1048572)或[this ](http://stackoverflow.com/a/38778887/1048572) – Bergi