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

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

# This is the JavaScript we'll run:

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

my $sbScript = Chilkat2::StringBuilder->new;
$sbScript->Append('console.log(\'Starting infinite loop...\'); while(true) {};');

my $js = Chilkat2::Js->new;

# 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);

my $result = Chilkat2::JsonObject->new;
$result->EmitCompact(0);

# Run the script..
my $success = $js->Eval($sbScript, $result);
if (!$success) {
    # Examine the result for an exception.
    print $result->Emit(), "\n";

    # 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 $js->LastErrorText, "\n";
    exit;
}

# We should never get here..
print "Succeeded.\n";
print $result->Emit(), "\n";
JavaScript
console.log('Starting infinite loop...');
while(true) {};