PromiseRace

by Jose Montero

HTML

<table>
<tr><td>Qty</td><td>Product</td><td></td></tr>
<tr><td><input type="text" min="1" data-stockItemId="1" max="100000" maxlength="6"/></td><td>Pliers</td><td><button>X
</button></td></tr>
<tr><td><input type="text" min="1" data-stockItemId="2" max="100000" maxlength="6"/></td><td>Scissors</td><td><button>X
</button></td></tr>
<tr><td><input type="text" min="1" data-stockItemId="3" max="100000" maxlength="6"/></td><td>Papers</td><td><button>X
</button></td></tr>
</table>
<button>
Submit Values
</button>

CSS

input{
  width: 60px;
  padding: 5px 5px;
  
}
td:nth-child(2n){
  width: 240px;
}

JavaScript

$(document).on('click', 'button:last', performValidation);

var locked = false;

var funcs = [];
funcs.push(addItem.apply(null, ['A', 'abcd']));
funcs.push(updateItem.apply(null, ['B', 'bcde']));
funcs.push(deleteItem.apply(null, ['B']));
funcs.push(addItem.apply(null, ['D', 'cdef']));



Promise.race([addItem.apply(null, ['A', 'abcd']), updateItem.apply(null, ['B', 'bcde']) ]).then(function(value){
	console.log("Value :"+value)
},function(err){
	console.log(err);
})

function performValidation()
{
	validateFields().then(function(result){
  	console.log(result);
  }
  ,function(err){
  	console.log(err);
  })
}

function addItem(id, value){ 
	return new Promise(function(resolve, reject){
		console.log("ID :"+id+" was added with value: "+value);
    resolve('add');
    //return 'add';
  });
}   
    
function updateItem(id, value){ 
	return new Promise(function(resolve, reject){

		console.log("ID :"+id+" was updated with value: "+value);
  	reject('update');
    return false;
    //return 'update';
   }); 
};
function deleteItem(id){ 
		return new Promise(function(resolve, reject){
 			 console.log("ID :"+id+" was deleted!");
       resolve('delete'); 
       //return 'delete';
    });
}    

function validateFields()
{
	return new Promise(function (fulfill, reject){
  
  	if (locked) reject("Object is locked!");
  
  	$.each($('input'), function(idx, inputQty)
    {

			console.log($(this).data());
      
      var inputValue = $(this).val();
  		if  (inputValue == ""){
    		reject("Not valid");
        return false;
     }   

    	  
   
  	});
    
  });

}
function rejectAndReturn(msg)
{
	Promise.reject(msg);
  return false;
}