Sample code for 30+ languages & platforms
Dart 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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This is the JavaScript we'll run:

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

  final sbScript = CkStringBuilder();
  sbScript.append('console.log(\'Starting infinite loop...\'); while(true) {};');

  final js = CkJs();

  // 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;

  final result = CkJsonObject();
  result.emitCompact = false;

  // Run the script..
  try {
    js.eval(sbScript, result);
  } on ChilkatException catch (e) {
    // Examine the result for an exception.
    print(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.
    print(e.lastErrorText);
    return;
  }

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