Skip to content

Instantly share code, notes, and snippets.

@Piefayth
Created December 11, 2015 02:57
Show Gist options
  • Save Piefayth/1ec342b2b7df517ff13b to your computer and use it in GitHub Desktop.
Save Piefayth/1ec342b2b7df517ff13b to your computer and use it in GitHub Desktop.
var request = require('request');
var promiseFunction = function(){
return new Promise(function(resolve, reject){
request.get('http://google.com', function(e, r, b){
console.log('got');
resolve();
});
});
}
var promises = [];
for(var i = 0; i < 20; i++){
promises.push(promiseFunction);
}
function queuePromises(in_promises, rate){
return new Promise(function(resolve, reject){
var promises = in_promises;
var activePromises = 0;
var cur = 0;
next();
function next(){
while(activePromises < rate){
if(cur < promises.length){
activePromises++;
promises[cur]().then(function(result){
activePromises--;
if(cur < promises.length){
next();
}
})
cur++;
} else {
return resolve(result);
break;
}
}
}
})
}
queuePromises(promises, 1)
.then(function(result){
console.log('done');
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment