如何在 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);
}
}
}
}
我正在尝试创建一个用于对整数数组进行排序的可视化工具。我需要在排序的每次迭代后绘制表示并添加延迟,这样它就不会立即发生并且只显示排序后的数组。但是,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);
}
}
}
}