Deferred
by Jose Montero
HTML
<table id="invoice-table">
<tr>
<td data-priority="1">Invoice #</td>
<td data-priority="2">Due</td>
<td data-priority="3">Amount</td>
</tr>
<tr>
<td data-priority="1">MI13150416113956</td>
<td data-priority="2">0.00</td>
<td data-priority="3"><input type="number" name="invamt0" size="4"/></td>
</tr>
<tr>
<td data-priority="1">MI13150416113960</td>
<td data-priority="2">$70.00</td>
<td data-priority="3" class="invamtcls"><input type="number" name="invamt1" size="4"/></td>
</tr>
<tr>
<td data-priority="1">MI13150416113960</td>
<td data-priority="2">$80.00</td>
<td data-priority="3" class="invamtcls"><input type="number" name="invamt1" size="4"/></td>
</tr>
<tbody>
</tbody>
</table>
JavaScript
var func = (function(){
return {
invoices : [],
init : function()
{
this.invoices.push({ 'paymentlineitemsid' : '123'});
this.invoices.push({ 'paymentlineitemsid' : '456'});
this.invoices.push({ 'paymentlineitemsid' : '789'});
this.process();
},
process : function()
{
var deferArr = this.createDeferredArray();
$.when.apply(this, deferArr)
.then(function(){
alert('All Done');
}.bind(this));
},
createDeferredArray : function()
{
var func = {};
var deferredArr = $.map($("input[name^='invamt']"), function(obj, i) {
var paymentLineItemId = this.invoices[i].paymentlineitemsid;
var invoicePayment = parseFloat(obj.value);
func = function(paymentLineItemId, invoicePayment){
this.updatePaymentLineItem(paymentLineItemId, invoicePayment) }.bind(this);
return func;
}.bind(this));
return deferredArr;
},
updatePaymentLineItem : function(paymentLineItemId, invoicePayment)
{
var addItemdeferred = $.Deferred();
setTimeout(function(addItemdeferred){
addItemdeferred.resolve();
},3000)
return addItemdeferred.promise();
}
};
})();
func.init();