У меня есть функция "promiseFunction", которая возвращает обещание, которое разрешается позднее.
Мне нужно вызывать эту функцию много раз, однако я хочу только установить количество выполнений этой функциислучиться сразу.
Функция вызывает некоторый внешний однопоточный c-код на моем компьютере, если я вызываю слишком много экземпляров этого кода за раз, то происходит сбой моей системы, но если я вызываю его последовательно по 1 за раз, это очень медленно, так как толькоодна нить моего процессора делает любую работу.
Итак, я пришел с кодом ниже, однако он не работает.Он будет вызывать первые 10 обещаний параллельно, но постепенно он начинает вызывать все меньше и меньше обещаний одновременно, пока не вызовет только 1 обещание за раз.
var totalNumberOfPromises = // total number times to run promiseFunction;
var promiseCounter = 0; // keep track of which promise call this is
for(w=0;w<10;w++){ // run 10 promises at a time
promiseFunction().then(function(resolve) {
loadNewPromise();
})
promiseCounter++;
}
function loadNewPromise(){
if(promiseCounter<totalNumberOfPromises){
promiseFunction().then(function(resolve) { loadNewPromise(); });
}else{
alert("Finished");
}
promiseCounter++;
}
Что-то не так с приведенным выше кодом, вызывающим такое поведение?И есть ли стандартный способ сделать это?