You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Kirn Khaira <ki...@tradebytes.com> on 2007/01/30 19:50:22 UTC

recursively calling a flowscript function

I have a flowscript function that takes in start and end parameters and
creates a form that includes a previous and next button on the form
page. After the form has been submitted, with either a next submit call
or previous submit call, it calls itself with new values for the start
and end parameters. Basically the function looks like this:

 

function myForm(start, end)

{           

            // get a record list from an hsql query using the start and
end values

            

var model = pu.processToDOM(...);

      

var form = new Form(model.getDocumentElement());

// set the start and end form variables...

 

form.showForm(...);

            

            // after submit do some calculations on the start and end
values and call this function again

myForm(newStart,newEnd);

}

 

My question is, is this the best way to do this? Is this too memory
intensive?

 

Kirn Khaira

 

 


Re: recursively calling a flowscript function

Posted by Jason Johnston <co...@lojjic.net>.
Kirn Khaira wrote:
> I have a flowscript function that takes in start and end parameters and 
> creates a form that includes a previous and next button on the form 
> page. After the form has been submitted, with either a next submit call 
> or previous submit call, it calls itself with new values for the start 
> and end parameters. Basically the function looks like this:
> 
>  
> 
> function myForm(start, end)
> {          
>             // get a record list from an hsql query using the start and 
> end values

> var model = pu.processToDOM(…);

> var form = new Form(model.getDocumentElement());
> 
> // set the start and end form variables…
> 
> form.showForm(…);
> 
>             // after submit do some calculations on the start and end 
> values and call this function again
> 
> myForm(newStart,newEnd);
> }
> 
> My question is, is this the best way to do this? Is this too memory 
> intensive?


The Rhino JavaScript interpreter does tail call optimization, so there's 
nothing inherently memory-wasting about recursively calling the function 
if the recursive call is the last thing in the function.

But, your example will create a whole new Form object instance for each 
iteration, which may not be what you want, and will suck up memory each 
time through.

Typically I just use a while-loop when I want to display the same form 
again and again, using the same Form instance...

function myForm()
{
    // default start and end values:
    var start = 0;
    var end = 25;

    var form = new Form(...);

    var finished = false;
    while(!finished) {
       form.showForm(...);

       // set new start and end as appropriate
       start = ...;
       end = ...;

       if(...) finished = true; //exit condition
    }

    //show confirmation screen or whatever
}


Hope that helps




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org