2014-02-13 7 views
15

Ich entwickle eine iOS 7 App, die Skriptfunktionen mit JavascriptCore hat.Gibt es eine Möglichkeit, die Ausführung von Javascript in einem JSContext-Objekt anzuhalten oder anzuhalten?

Ich möchte eine Möglichkeit haben, den Code, der gerade auf dem JSContext ausgeführt wird, anzuhalten oder vollständig zu beenden. JavascriptCore ist nicht wirklich gut dokumentiert, daher konnte ich keine Antwort finden.

Ich habe ein paar Ideen:

  • aus dem Kontext verwendet, um das Brückenobjekt entfernen mit meiner App zu interagieren und lassen nur jeden Code immer noch nicht läuft.
  • Den JSGlobalContextRef für meinen JSContext abrufen und mit JSGlobalContextRelease freigeben und einen zu verwendenden JSContext neu erstellen.

aber hoffentlich gibt es bessere Möglichkeiten.

Jede Hilfe wäre willkommen. Vielen Dank!

+0

Nicht sicher, ob das relevant ist, sondern Generatoren sollte einen Mechanismus zum Starten und Stoppen der Gesamtausführung bieten von der Anwendung, aber erfordert, dass Sie Ihren Code so entwickeln, um das zu erleichtern. – ArcSine

Antwort

0

Wenn noch relevant, könnten Sie eine Schleife erstellen, die den Zähler (der nach jedem Zyklus hochgeht) und den Höchstwert des Zählers hinzufügt. Ich nehme an, Sie können einen zweiten Kern verwenden, da es als Kern Javascript genannt wird. In diesem zweiten Kern können Sie eine Funktion setzen, die den Wert des Zählers um 10 erhöht, so dass er den maximalen Wert des Zählers überschreitet, und so wird der Code fortgesetzt. Sie brauchen keinen zweiten Kern, wenn Sie zwei Funktionen gleichzeitig aufrufen können.

Ansonsten können Sie alles unter einem anderen Namen speichern und die alten mit nichts überschreiben.

0

kann u Java Script Timeout Rückruf verwenden, wenn auf JSContext Objekt ausgelöst wird

function myFunction() { 
 
    alert('wait is over'); 
 
}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 

 
<button onclick="setTimeout(myFunction, 3000);">Click Me</button> 
 
<!-- In this context im using a simple button to trigger the call back in your case u can triggeer on jscontext--> 
 

 
</body> 
 
</html>