[FIXED] Problem bei der Rückgabe einer Variablen aus einer Evalskriptfunktion

Ausgabe

Ich arbeite an einem CEP-HTML-Panel für Photoshop und möchte zuerst prüfen, ob es geöffnete Dokumente gibt, bevor mein Panel das tut, was es tun soll. Also habe ich so etwas in meine index.js eingebaut , um zu testen, ob ich das richtige Ergebnis erhalte. Aber psDocumentsLengthvariable gibt als undefiniert zurück. Irgendeine Idee, was ich falsch mache?

(function()
{
   'use strict';

    var csInterface = new CSInterface();
    var psDocumentsLength; //1//

    function init()
    {
        themeManager.init();
        $(document).ready(function()
        {
            check_PSDocumentsLength();
            alert(psDocumentsLength); //4//
        });
    };

    init();

    function check_PSDocumentsLength() //2//
    {
        var chosenFunction = 'checkDocumentsLength()';
        csInterface.evalScript(chosenFunction, function(result)
        {
            psDocumentsLength = result; //3//
        });
    };

}());

Lösung

In Anbetracht dessen, was Sergey Kritskiy bei graphicdesign on stackexchange über das Problem des asynchronen CodessetTimeout gesagt hat, habe ich versucht, einen After -Function-Call hinzuzufügen check_PSDocumentsLength(), und es hat funktioniert !!! Also mein Code sieht jetzt so aus…

    (function()
    {
       'use strict';

        var csInterface = new CSInterface();
        var psDocumentsLength; //1//

        function init()
        {
            themeManager.init();
            $(document).ready(function()
            {
                check_PSDocumentsLength();
                setTimeout(function()
                {
                    alert(psDocumentsLength);
                }, 1000); //4//
            });
        };

        init();

        function check_PSDocumentsLength() //2//
        {
            var chosenFunction = 'checkDocumentsLength()';
            csInterface.evalScript(chosenFunction, function(result)
            {
                psDocumentsLength = result; //3//
            });
        };

    }());


Beantwortet von –
Simos Sigma


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like