2020-09-01 10:31 采纳率: 50%
浏览 652
已采纳

在js for循环中,如何做到延迟效果?

最近在做算法演示动画,但在js中遇到些许问题。

    function playbubbleSort(arr) {

        var len = arr.length;
        for(var i = 0; i < len - 1; i++) {
            for(var j = 0; j < len - 1 - i; j++) {
                if(arr[j] > arr[j+1]) {
                    var temp_left = parseInt(window.getComputedStyle(div_child_obj[j+1],null).getPropertyValue("left"));    
                    div_child_obj[j+1].style.left = window.getComputedStyle(div_child_obj[j],null).getPropertyValue("left");
                    div_child_obj[j].style.left = temp_left+"px";

                    var temp = arr[j+1]; 
                    arr[j+1] = arr[j];
                    arr[j] = temp;

                    let start = (new Date()).getTime();
                    while((new Date()).getTime() - start < 2000){
                        continue;
                    }

                }
            }
        }
        return arr;
    }

我想在if句结尾处写一个延迟,从而实现动画不是一瞬间结束,而是慢慢一步步进行。然而我在结尾处添加的

let start = (new Date()).getTime();
     while((new Date()).getTime() - start < 2000){
             continue;
     }

并不是我所预想的情况,实际运行过程中,是等待 (循环总次数x2) 秒,然后依旧是瞬间结束,请问有啥更好的解决方法吗

展开全部

  • 写回答

2条回答 默认 最新

  • jingluan666 2020-09-01 11:25
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部