Retry promise

Retry promise

by christophes

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

JavaScript

function promiseWithRetry(fn, retries){

		console.log("retry :"+retries);
		
		return new Promise(function(resolve, reject) {
			fn.then(function(response){

				if(_.isEmpty(response) && retries > 0){
					console.log("start new retry");
					resolve(promiseWithRetry(fn, retries-1));
				
				}else{
					console.log("resolve");
					resolve(response);
				}

			});
		});
	}

	var parameters = {  
		action: "firstLoad"  
	};
	
	promiseWithRetry(serverGet(parameters), 5).then(function(response){
		console.log(response)
	});
  
  
 function serverGet(parameters) {
  return new Promise((resolve, reject) => {
  	
    if(Math.floor(Math.random() * Math.floor(2))){
    	resolve({});
    }else{
    	resolve({
      	message : "The response is OK",
        status: "OK"
      });
    }
    
  });
}