gpt4 book ai didi

使用 setTimeOut 的 Javascript 流控制

转载 作者:行者123 更新时间:2023-11-30 06:37:18 24 4
gpt4 key购买 nike

这里是“为什么这行得通”而不是“为什么这行不通?” movePic 函数更新一对图像的坐标,并根据需要更改图像,然后调用 setTimeOut(movePic, delay)。因此 movePic 函数在 mnovePic 函数中被调用。

  1. 为什么这不会使函数内部的函数无限递归?

  2. 如果问题 1 的答案是当 setTimeOut 调用 movePic 时,它也首先脱离 movePic,那么在 setTimeOut 之后发生的图像的实际移动是如何执行的?

    <

完整页面位于 www.salemharvest.org .函数是:

function movePic ()  {
left1 += movement;
left2 += movement;
if (left1 > 500) { // photo1 disappears over right edge
left1 = -510; // photo1 goes to 500 left of window
left2=-510; // photo2 goes to START of window
j=j+1;
if (j > (p - 1)) j = 0;
document.images.animated1.src = preLoad[j].src; // switches to photo
}
else if (left1==0) { // photo1 fully in window
left2 =-1010; // photo2 goes to 510 ABSOLUTE to left of window
j=j+1;
if (j > (p - 1)) j = 0;
document.images.animated2.src = preLoad[j].src; // switches the photo
}
setTimeout (movePic, delay);
photo1.style.left = left1 + "px";
photo2.style.left = left2 + "px";
} // end of movePic function

最佳答案

setTimeout 安排函数在以后的某个时间调用。它不影响,实际上与当前调用堆栈中执行的代码无关。

setTimeout 回调运行时,之前的调用已经完成;它不在调用堆栈上。

因此,您不会遇到堆栈溢出。

关于使用 setTimeOut 的 Javascript 流控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com