Я искал и нашел некоторые варианты этого, но не нашел ничего, что точно соответствует моим потребностям. Ниже псевдокод, что я пытаюсь выяснить:Что такое хороший шаблон для ожидания до тех пор, пока количество обещаний не будет завершено, чтобы создать новое обещание?
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
- это то, что я могу использовать для этого, но я не могу понять нужную логику. Любая помощь будет очень признательна, и если есть что-то еще, я могу ее изменить, чтобы помочь кому-то лучше понять проблему, просто дайте мне знать, спасибо!
Вам нужно прочитать информацию о цепочке обещаний и отложенных звонков, ключевое слово здесь. .then() ' – rorschach
Посмотрите на [это] (http://stackoverflow.com/a/39197252/1048572) или [это ] (http://stackoverflow.com/a/38778887/1048572) – Bergi