質問に答えるには、スリープ関数のようなものを取得するには、ヘルパー関数としてこのようなものを書くだけです
function sleep(dur) {
var d = new Date().getTime() + dur;
while(new Date().getTime() <= d ) {
//Do nothing
}
}
console.log(new Date().getTime())
sleep(1000)
console.log(new Date().getTime())
次に、次のように繰り返しごとに関数を呼び出すことができますsleep
function abc(){
for(i=1;i<=10;i++){
document.write(i+"<br>");
sleep(1000);
}
}
ただしsleep
、この時点でブラウザがフリーズすることに注意してください。定期的に sth を実行したいだけの場合、この種の動作は実際には望ましくありません。
window.setInterval
そのような場合にあなたが望むものになるでしょう
function abcd(i){
document.write(i + "<br>")
}
function repeatedTimeout(func,times,duration) {
var args = Array.prototype.slice.call(arguments).splice(3);
var i = 0;
args.push(i)
var wrap = function () {
if(args[args.length - 1] >= times)
window.clearInterval(wrap)
else {
func.apply(this,args)
args[args.length - 1]++
}
}
window.setInterval(wrap,duration)
}
repeatedTimeout(abcd,10,1000)
これは、Browers をフリーズすることなく、1000 ミリ秒ごとに 10 回呼び出すことになります。
JSBinはこちら
アップデート
本当に for ループである必要がある場合は、私にとって意味があるかどうかに関係なく、このようなことを行うことができます
for (var i = 0; i <= 10 ; i++) {
window.setTimeout(
(function (i){
return function() {
document.write(i + "<br>")
}
})(i),i * 1000)
}
この場合、別のJSBin を用意します
これはループで呼び出さwindow.setTimeout
れ、タイムアウトとしてタイムアウトの倍数が呼び出されますが、これは機能しますが、コメントに投稿したフィドルで既に行ったように使用することをお勧めしますfor
i
setInterval