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 psDocumentsLength
variable 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)