Home » Code
October 9, 2021 Sử dụng sleep javascript – Với sự trợ giúp của Sleep [], ta có thể tạo một hàm để tạm dừng thực thi trong một khoảng thời gian cố định.function sleep[ms] {
return new Promise[resolve => setTimeout[resolve, ms]];
}
async function demo[] {
console.log['Taking a break...'];
await sleep[2000];
console.log['Two seconds later, showing sleep in a loop...'];
// Sleep in loop
for [let i = 0; i < 5; i++] {
if [i === 3]
await sleep[2000];
console.log[i];
}
}
demo[];
I have searched/googled quite a few webpages on JavaScript sleep/wait... and there is no answer if you want JavaScript to "RUN, DELAY, RUN"... what most people got was either, "RUN, RUN[useless stuff], RUN" or "RUN, RUN + delayed RUN"...
I thought: here is a solution that works... but you have to chop up your running codes...: Yes, I know, this is just an easier to read refactoring... still...
Example 1:
DISPLAY
// JavaScript sleep by "therealdealsince1982"; copyrighted 2009
// setInterval
var i = 0;
function run[] {
// Pieces of codes to run
if [i == 0]{document.getElementById["id1"].innerHTML= "code segment " + i + " is ran
"; }
if [i == 1]{document.getElementById["id1"].innerHTML= "code segment " + i + " is ran
"; }
if [i == 2]{document.getElementById["id1"].innerHTML= "code segment " + i + " is ran
"; }
if [i >2]{document.getElementById["id1"].innerHTML= "code segment " + i + " is ran
"; }
if [i == 5]{document.getElementById["id1"].innerHTML= "all code segment finished running
"; clearInterval[t]; } // End interval, stops run
i++; // Segment of code finished running, next...
}
run[];
t = setInterval["run[]", 1000];
Example 2:
DISPLAY
// JavaScript sleep by "therealdealsince1982"; copyrighted 2009
// setTimeout
var i = 0;
function run[] {
// Pieces of codes to run, can use switch statement
if [i == 0]{document.getElementById["id1"].innerHTML= "code segment " + i + " ran
"; sleep[1000];}
if [i == 1]{document.getElementById["id1"].innerHTML= "code segment " + i + " ran
"; sleep[2000];}
if [i == 2]{document.getElementById["id1"].innerHTML= "code segment " + i + " ran
"; sleep[3000];}
if [i == 3]{document.getElementById["id1"].innerHTML= "code segment " + i + " ran
";} //stops automatically
i++;
}
function sleep[dur] {t=setTimeout["run[]", dur];} // Starts flow control again after 'dur'
run[]; // Starts
Example 3:
DISPLAY
// JavaScript sleep by "therealdealsince1982"; copyrighted 2009
// setTimeout
var i = 0;
function flow[] {
run[i];
i++; // Code segment finished running, increment i; can put elsewhere
sleep[1000];
if [i == 5] {clearTimeout[t];} // Stops flow, must be after sleep[]
}
function run[segment] {
// Pieces of codes to run, can use switch statement
if [segment == 0]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment == 1]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment == 2]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment >2]{document.getElementById["id1"].innerHTML= "code segment "+ segment +" is ran
"; }
}
function sleep[dur] {t=setTimeout["flow[]", dur];} // Starts flow control again after 'dur'
flow[]; // Starts flow
Example 4:
DISPLAY
// JavaScript sleep by "therealdealsince1982"; copyrighted 2009
// setTimeout, switch
var i = 0;
function flow[] {
switch[i]
{
case 0:
run[i];
sleep[1000];
break;
case 1:
run[i];
sleep[2000];
break;
case 5:
run[i];
clearTimeout[t]; // Stops flow
break;
default:
run[i];
sleep[3000];
break;
}
}
function run[segment] {
// Pieces of codes to run, can use switch statement
if [segment == 0]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment == 1]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment == 2]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
if [segment >2]{document.getElementById["id1"].innerHTML= "code segment " + segment + " is ran
"; }
i++; // Current segment of code finished running, next...
}
function sleep[dur] {t=setTimeout["flow[]", dur];} // Starts flow control again after 'dur'
flow[]; // Starts flow control for first time...