javascript - 如何减慢 JavaScript 中 for 循环的执行速度?

标签 javascript for-loop timedelay

我正在制作一个基本的图像 slider (按下一个/上一个按钮,图片会发生变化)。我还尝试实现一个非常简单的淡入淡出效果;为此,我有一个 for 循环来更改图像的类,循环更改不透明度的类。该代码运行良好并且执行了我想要的操作,但是 for 循环执行得如此之快,以至于您没有注意到不透明度的变化。我查遍了所有地方,人们都提到了 setTimeout,但这只会导致函数的延迟启动。我只是想减慢我的 for 循环,以便您可以直观地注意到每次迭代。

function nextphoto(){

    for(var x = 0; x < 5; x++){
        photo.className = fade[x];
    }

    i++;
    if(i>19){
    i=0;
    }

    photo.src = image[i];

    for(var y = 4; y >= 0; y--){
        photo.className = fade[y];
    }
}

最佳答案

您可能误解了同步代码执行的概念。所有代码都必须先完成运行,然后才能更新或“渲染”到屏幕上。因此,您的 for 循环将运行直到完成,然后屏幕将更新,但它当然只会渲染图像的最终 View 。

您应该通过 javascript 向元素动态添加一个类来触发 CSS 转换,或者如果您迫切希望在代码中完成这一切,有某种原因不使用 CSS,并且不想编写自定义每帧动画系统,或使用库,然后在 for 循环的每次迭代内,触发一个异步函数,该函数将在当前同步 for 循环代码之外的稍后时间更新。

即:

var aThing;
for(var i = 0; i < someNumber; i++){
  setTimeout(function(){
    aThing.someValue = aThing.someValue * .9;
  }, 500 * i);
}

关于javascript - 如何减慢 JavaScript 中 for 循环的执行速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883259/

相关文章:

javascript - safari 中 window.url 的替代方案

javascript - 使用node js中的模块fs删除文件时出现奇怪的错误

javascript - 为什么我不能重新分配 window.document 属性?

javascript - 使用我们自己的键将两个数组作为 json 对象推送

php - 在 PHP for 循环中组合字符串和数字

c++ - 打印特定板 C++ 的最有效代码

java - Android 在延迟结束之前获取公共(public)位图函数返回

C++0x 用基于范围的 for 循环替换 for(int i;;) 范围循环的方法

javascript - JQuery 功能列表滑动延迟

c - 如何用 C 创建我自己的延迟函数