[英]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.