Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loSbScript
LOCAL loJs
LOCAL loResult
lnSuccess = 0
* This is the JavaScript we'll run:
* console.log('Starting infinite loop...'); while(true) {};
loSbScript = CreateObject('Chilkat.StringBuilder')
loSbScript.Append("console.log('Starting infinite loop...'); while(true) {};")
loJs = CreateObject('Chilkat.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.
loJs.TimeoutSeconds = 2
loResult = CreateObject('Chilkat.JsonObject')
loResult.EmitCompact = 0
* Run the script..
lnSuccess = loJs.Eval(loSbScript,loResult)
IF (lnSuccess = 0) THEN
* Examine the result for an exception.
? loResult.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.
? loJs.LastErrorText
RELEASE loSbScript
RELEASE loJs
RELEASE loResult
CANCEL
ENDIF
* We should never get here..
? "Succeeded."
? loResult.Emit()
RELEASE loSbScript
RELEASE loJs
RELEASE loResult