Persistent Settings Update

Soon after I posted my persistent settings library, I received my first bug on it.  I'll discuss the bug a bit, but first things first - the bug is fixed, and the links updated; if you previously downloaded the library, please go ahead and get the updated version.

Details:

The symptom of the bug was that the following two consecutive calls:

 getPersistentSetting( "setting", firstCallback );
getPersistentSetting( "setting", secondCallback );

Would result in two calls on the 'secondCallback' function.  The failure itself made it clear to me where the error was; and the location of the error suggested the fix.  I'm afraid I don't know enough about the intricacies of the javascript language to know exactly why it failed in the first place, though; perhaps one of my more knowledgable readers will chime in.

Here is the failing code:

 window.setTimeout(function ()
{
    try
    {
        workItem.callback(returnValue);
    }
    catch (e)
    {
        persistentSettingLog("exception from callback: " + e.name + ": " + e.message);
    }
}, 0);

And here is the fixed version:

 persistentSettingScheduleCallback(workItem.callback, returnValue);
function persistentSettingScheduleCallback(callback, returnValue)
{
    window.setTimeout(function ()
    {
        try
        {
            callback(returnValue);
        }
        catch (e)
        {
            persistentSettingLog("exception from callback: " + e.name + ": " + e.message);
        }
    }, 0);
}

Comments