operation doesn't complete on beforeUnload

  • 1
  • Problem
  • Updated 3 years ago
  • Solved
When adding a  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.

(function(skuid){ var $ = skuid.$;

function removeUnfinishedRows(){
    var rowsToCheck = skuid.model.getModel('SubmissionsForSelectedBanks');
    var rowsToCheckData =;
    //cancel changed since save() needs to be called in order to delete rows.
    //if save is called and changes aren't cancelled, some unintended changes may occur.
    //iterate thru each submission in the model that creates submissions and make sure that they've been sent
    //if they haven't been sent, mark them for deletion
            rowToCheckTemp = rowsToCheckData[index];
                rowsToCheck.deleteRow({ Id: rowToCheckTemp.Id });
    savePromise =;
    console.log(savePromise); //this prints 'pending'
//only uncomment if you want your tab to crash. This while loop goes on forever
        //do nothing... wait until promise is done failing or resolving
Photo of Shmuel Kamensky

Shmuel Kamensky, Champion

  • 4,700 Points 4k badge 2x thumb

Posted 3 years ago

  • 1
Photo of Shmuel Kamensky

Shmuel Kamensky, Champion

  • 4,700 Points 4k badge 2x thumb
The resolution was to change when my function would fire. Instead of using $window.unload, use