繁体   English   中英

如何在Java脚本中添加延迟?

[英]How do I add a delay in java script?

我正在尝试创建一个可视化工具来对整数数组进行排序。 我需要在排序的每个迭代之后绘制表示形式,并添加一个延迟,以便它不会立即发生,而仅显示排序后的数组。 但是,setTimeout似乎不起作用,它只是显示排序数组的表示形式,而不是在每次迭代之后。 该代码在Java脚本中。

function sort(){
  var len = arr.length;
   for (var i = len-1; i>=0; i--){
    for(var j = 1; j<=i; j++){
       if(arr[j-1]>arr[j]){
           var temp = arr[j-1];
           arr[j-1] = arr[j];
           arr[j] = temp;
           setTimeout(startDraw, 3000);
        }
     }
   }
}

您需要了解您在这里做什么。 如果您以自己的方式调用setTimeout,则不会达到目的,因为初始循环仍会在不等待setTimeout的情况下完成。 因此,您必须:1.中断循环并2.中断之前调用绘图函数

var arr = [5,4,4,6,7,7,21,45,5,7,87,1,3,5,65];

function sort(){
  var len = arr.length;
  loop1:
   for (var i = len-1; i>=0; i--){
   loop2:
    for(var j = 1; j<=i; j++){
       if(arr[j-1]>arr[j]){
           var temp = arr[j-1];
           arr[j-1] = arr[j];
           arr[j] = temp;
           console.log(arr);
           setTimeout(sort, 1000);
           break loop1;
        }
     }
   }
}

sort();

尝试使用let而不是var

function sort(){
   let len = arr.length;
    for (let i = len-1; i>=0; i--){
       for(let j = 1; j<=i; j++){
          if(arr[j-1]>arr[j]){
            let temp = arr[j-1];
            arr[j-1] = arr[j];
            arr[j] = temp;
            setTimeout(startDraw, 3000);
       }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM