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;
}