![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PowerBuilder) Prevent JavaScript Infinite LoopsSee more JavaScript ExamplesDemonstrates how prevent infinite loops or prevent the JavaScript from running for a longer amount of time than allowed.Note: This example requires Chilkat v11.4.0 or greater.
integer li_rc integer li_Success oleobject loo_SbScript oleobject loo_Js oleobject loo_Result li_Success = 0 // This is the JavaScript we'll run: // console.log('Starting infinite loop...'); while(true) {}; loo_SbScript = create oleobject li_rc = loo_SbScript.ConnectToNewObject("Chilkat.StringBuilder") if li_rc < 0 then destroy loo_SbScript MessageBox("Error","Connecting to COM object failed") return end if loo_SbScript.Append("console.log('Starting infinite loop...'); while(true) {};") loo_Js = create oleobject li_rc = loo_Js.ConnectToNewObject("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. loo_Js.TimeoutSeconds = 2 loo_Result = create oleobject li_rc = loo_Result.ConnectToNewObject("Chilkat.JsonObject") loo_Result.EmitCompact = 0 // Run the script.. li_Success = loo_Js.Eval(loo_SbScript,loo_Result) if li_Success = 0 then // Examine the result for an exception. Write-Debug loo_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. Write-Debug loo_Js.LastErrorText destroy loo_SbScript destroy loo_Js destroy loo_Result return end if // We should never get here.. Write-Debug "Succeeded." Write-Debug loo_Result.Emit() destroy loo_SbScript destroy loo_Js destroy loo_Result
|
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.