Sample code for 30+ languages & platforms
React Native Requires Chilkat v11.4.0+

Prevent JavaScript Infinite Loops

See more JavaScript Examples

Demonstrates how prevent infinite loops or prevent the JavaScript from running for a longer amount of time than allowed.

Chilkat React Native Downloads

React Native
import { Js, JsonObject, StringBuilder } from '@chilkat/react-native'

async function chilkatExample() {
  // This is the JavaScript we'll run:

  // console.log('Starting infinite loop...'); while(true) {};

  const sbScript = new StringBuilder();
  sbScript.append('console.log(\'Starting infinite loop...\'); while(true) {};');

  const js = new Js();

  // Set a limit on the amount of time (in seconds) the script is allowed to run.
  // If the JavaScript takes longer than this amount of time, then Chilkat kills the script without crashing the host program.
  // The default value of TimeoutSeconds is 0, which indicates no limit.
  // For this example, set a limit of 2 seconds.
  js.timeoutSeconds = 2;

  const result = new JsonObject();
  result.emitCompact = false;

  // Run the script..
  try {
    await js.evalAsync(sbScript, result);
  } catch {
    // Examine the result for an exception.
    console.log(result.emit());

    // The result contains this:

    // 	{
    // 	  "exception": {
    // 	    "message": "interrupted - JavaScript exceeded the Chilkat.Js.TimeoutSeconds",
    // 	    "stack": [
    // 	      {
    // 	        "func": "<eval>",
    // 	        "file": "<input>",
    // 	        "line": 1,
    // 	        "col": 8
    // 	      }
    // 	    ]
    // 	  }
    // 	}

    // Also examine the LastErrorText.
    console.log(js.lastErrorText);
    return;
  }

  // We should never get here..
  console.log('Succeeded.');
  console.log(result.emit());
}
JavaScript
console.log('Starting infinite loop...');
while(true) {};