[thelist] Javascript: run a function once a function is complete

ben morrison morrison.ben at gmail.com
Mon Jan 9 08:30:43 CST 2006


> Depends, if A is an AJAX load thingy then you need to monitor the
> readyState to see when the whole thing was loaded (4), and also
> provide a timeout fallback in case it simply takes too long.
>
>
Yes im currently using the protoype ajax call so im using

onComplete: showResponse

which is my function:

 function showResponse(originalRequest) {
            //put returned XML into xmlDoc for processing...
             var xmlDoc = originalRequest.responseXML;
             xmlDoc = xmlDoc.documentElement;

              //Regular expression used to match any non-whitespace
character
            var notWhitespace = /\S/;
            for (var i=0; i<xmlDoc.childNodes.length; i++) {
                  if ((xmlDoc.childNodes[i].nodeType ==
3)&&(!notWhitespace.test(xmlDoc.childNodes[i].nodeValue))){
                      xmlDoc.removeChild(xmlDoc.childNodes[i])
                      }
                }
             for (var i=0; i<xmlDoc.childNodes.length; i++) {
                objPrefs.prefs[i] = xmlDoc.childNodes[i].nodeName;
                  objPrefs.prefValue[i] = xmlDoc.childNodes
[i].firstChild.nodeValue;
             }
             alert("Loaded");
             objPrefs.loaded = true;
         }
    },

My other function needs to make sure this has worked before i call it

    //return the value of the preference
    get: function(prefname) {
        if (this.loaded){
            var i = this.prefpos(prefname);
            if (i >=0) {
                return this.prefValue[i];
            } else {
                return "BadFieldName!";
            }
        } else {
//try and make sure its been transformed
            setTimeout("objPrefs.get('"+prefname+"')", 1000);
            }

    },


As you can see there is too much recursion going on there, any ideas?

ben



More information about the thelist mailing list