foundset.forEach() Continue Statement not Supported?

Version: 8.2.3.3109

It appears that the Foundset Iterator loop structure does not support the continue statement to force advancement to the next record. When I attempt to use it, I get the following marker message:

The property continue is undefined for the type JSFoundset

So, how do you skip processing a record in the foundset.forEach() loop?

e.g. Say a record fails a validation test and you want to go to the next record:

foundset.forEach(
            /**
             * @param {JSRecord} record
             * @param recordIndex
             * @param {JSFoundset} fs
             */
            function(record, recordIndex, fs)
            {
                if ( !validate( record ) foundset.continue

                ...
            }
        );

Thank you.

I solve this with a ‘throw’

try {
	foundset.forEach(
	/**
	 * @param {JSRecord<db:/modulo/pro>} _rc
	 * @param {Number} _index
	 * @param {JSFoundSet<db:/modulo/prov>} _fs 
	 */
	 function(_rc, _index, _fs){
		 try {

			 if ( !validate( record )) 	throw "stop";
		 } catch (e) {
			 if(e != "stop"){
					application.output('HC_relProvListPrec_articulos ERROR: '+e,LOGGINGLEVEL.ERROR);
					throw e;
				}
		 }
		 
	 });
} catch (e) {
	if(e != "stop"){
		application.output('HC_relProvListPrec_articulos ERROR: '+e,LOGGINGLEVEL.ERROR);
		throw e;
	}
}

That’s interesting…I would have never thought to use the error mechanism as a continue statement! I was hoping for a ‘cleaner’ solution but will give your method a try.

Thank you, Manuel.

Since you are just running a function for each record, you can also just do a return:

foundset.forEach(
            /**
             * @param {JSRecord} record
             * @param recordIndex
             * @param {JSFoundset} fs
             */
            function(record, recordIndex, fs)
            {
                if ( !validate( record ) return;

                ...
            }
        );

Sorry, I misunderstood you, I thought you wanted to break the foreach. As it says Ruben, with the ‘return’ you go straight to the next record.

Forest through the trees! I was thinking in terms of a loop structure as opposed to a function call. The return is obvious, once you brought it to my attention.

Thank you both for responding!

I think when you return something

like “return false”

then it will stop right away, for example if you would do something like

var recordFound = foundset.forEach(function(record){
if (record.xxx = “yes”) return record;
});

then at the moment it hits a a record where “xxx” is “yes” it will stop and return that record.