关键问题是循环中的功能不同步。除非我包含alert()来减慢该过程,否则我不会得到正确的var myDimensions
。我不确定是否需要使用回调。我阅读了有关它们的内容,发现它们令人困惑,并且我想避免回调地狱。发生的事情是,在循环中运行某个函数时,我的其他一些函数调用不同步。 我正在将此JavaScript作为Adobe InDesign的Extendscript编写,因此Extendscript不包括现代JS。
在函数中添加alert()
以返回值以确认我获得了正确的值后,我发现了计时问题。如果添加alert()
,则会导致延迟,从而使代码正确运行。当我删除alert()
时,它再次失败。为了简洁起见,我尝试简化代码,而不是粘贴完整的1,500行文件。
function calculateSomething(podValue){
return podValue + 1;
}
function doPodStuff(value){
return value;
}
function getDimensions(calculation){
return calculation * 2;
}
function pod(value, count){
var podStuff;
var calculation;
var myDimensions;
podStuff = doPodStuff(value);
calculation = calculateSomething(podStuff):
myDimensions = getDimensions(calculation);
/* this is where my timing is off and podStuff and calculation get out of sync,
I determined this after placing an alert(myDimensions) right here If I add the alert(),
the delay makes it work, when I remove alert() it fails again.
*/
return myDimensions;
}
function row(value, count){
var myPod;
for(var i = 0; i < count; i++){
myPod = pod(value, 2);
}
return myPod;
}
row('foobar', 4);
我的目标是使pod()
函数在for()
循环中运行,但不会出现混乱。如何同步或确保时间正确?
答案 0 :(得分:0)
您可以尝试链接您的功能:
function pod(value, count) {
return getDimensions(calculateSomething(doPodStuff(value))) }
在任何情况下,您都可以使用$.sleep(1000)
而不是alert("...")
来降低脚本速度。