When adding a model.Model.save() function to window.unload, the save() does not complete on the server side. I tested the code in the console outside of the unload function, and the save completes as expected.
I noticed that the jQuery deferred promise object returned by the mode save function remains in a ‘pending’ state forever. Why would this be?
Is there a fix?
Code is below if you want to reproduce the issue.
<br><br>(function(skuid){ var $ = skuid.$;<br>$(document.body).one('pageload',function(){<br>$(window).unload(function(){<br> try{<br> <br> removeUnfinishedRows();<br> <br> }<br> catch(e){<br> <br> console.log(e);<br> <br> }<br> <br> debugger;<br> });<br><br>});<br>})(skuid);<br>function removeUnfinishedRows(){<br> <br> var rowsToCheck = skuid.model.getModel('SubmissionsForSelectedBanks');<br> var rowsToCheckData = rowsToCheck.data;<br> <br> //cancel changed since save() needs to be called in order to delete rows.<br> //if save is called and changes aren't cancelled, some unintended changes may occur.<br> rowsToCheck.cancel();<br> <br> //iterate thru each submission in the model that creates submissions and make sure that they've been sent<br> //if they haven't been sent, mark them for deletion<br> rowsToCheckData.forEach(<br> <br> function(element,index,array){<br> <br> rowToCheckTemp = rowsToCheckDatacindex];<br> if(!rowToCheckTemp.Custom_Relationship__r.Form_Is_Incomplete__c){<br> rowsToCheck.deleteRow({ Id: rowToCheckTemp.Id });<br> <br> }<br> }<br> );<br> <br> savePromise = rowsToCheck.save();<br> console.log(savePromise); //this prints 'pending'<br>//only uncomment if you want your tab to crash. This while loop goes on forever<br> /*while(savePromise.state()=='pending'){<br> //do nothing... wait until promise is done failing or resolving<br> }*/<br> <br>}