---
title: "Sakta ner loop"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/179076-sakta-ner-loop"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Tulork"
published: "2009-06-21T18:14:28.000Z"
updated: "2009-06-22T12:27:47.000Z"
replies: 6
views: 591
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/179076-sakta-ner-loop"
---

# Sakta ner loop

## #1 — Tulork, 2009-06-21T18:14Z

Vet inte om det är mer lämpligt att göra det med hjälp av Javascript... men jag skulle behöva en sätt att söla ner en loop.

Exempelloop

```php
for($i = 0; $i < 10; $i++) {
   echo "***********";
}
```

Om jag skulle vilja att echo bara körs 1 gång vart 0.5:e sekund. Hur ska jag gå till väga?

Permalänk: https://www.webforum.nu/p/179076

## #2 — SPiN, 2009-06-21T18:32Z

```php
<?php
echo "Hej";
usleep(500000);
echo "En halv sekund senare";
```

Tänk dock på att användarna upplever sidan som långsam, hela output:en från PHP brukar buffras i webservern innan något visas för besökaren. Antagligen är JavaScript lösningen du är ute efter.

Permalänk: https://www.webforum.nu/p/2191138

## #3 — Tulork, 2009-06-21T18:46Z

Japp, det är nog javascript jag är ute efter. Men... det är jag ännu sämre på. Någon vänlig själ får mer än gärna flytta den här tråden till javascriptavdelningen.

Permalänk: https://www.webforum.nu/p/2191142

## #4 — The_Hulk, 2009-06-22T07:23Z

Hela output:en behöver inte buffras på servern, man kan tvinga ut den med 

```php
flush();
```

Det är dock inte alltid det fungerar men oftast, jag vet inte om det är något man kan ställa in i webbservern eller i php.ini

Permalänk: https://www.webforum.nu/p/2191161

## #5 — Compusa, 2009-06-22T11:19Z

Flyttad från PHP, enligt trådskaparens begäran.

Permalänk: https://www.webforum.nu/p/2191177

## #6 — nitro2k01, 2009-06-22T12:22Z

```
<body>
<script type="text/javascript">

function IntervalTimer(f, t, i){
	var t=t,f=f,i=i,th=this;

	if (this===window)
		throw new Error('IntervalTimer: Object must be created with new IntervalTimer(myFunc, 1000, 5)');

	if ('function' != typeof f)
		throw new Error('IntervalTimer: Supplied argument f is not a function.');

	var iid=setInterval(function(){
		if (--i<1)
			th.clearInterval()

		var retval = f.call(window, i);

		if (retval)
			this.clearInterval();
	}, t);

	this.clearInterval=function(){
		window.clearInterval(iid);
	}
}

function test(times){
	var output = document.getElementById('output');
	var textElem = document.createTextNode(times + ' gånger kvar. ');
	output.appendChild(textElem);
}

window.onload=function(){
	timer = new IntervalTimer(test, 2000, 3);
}
</script>
<div id="output">Output: </div>

</body>
```

Du kan använda setInterval för att köra en funktion med jämna mellanrum. Ovan har jag bifogat en funktion som dessutom enkelt låter dig funktionen enbart x antal gånger. Funktionen måste anropas med new som visas ovan. I exemplet körs funktionen 3 gånger med 2000 millisekunders mellarum. (Alltså 2 sekunder)
Notera för övrigt att du inte kan använda document.write när sidan är färdigladdad - då måste du lägga till saker på annat sätt, t ex med DOM-metoder som ovan, eller mha innerHTML.

Permalänk: https://www.webforum.nu/p/2191184

## #7 — Tulork, 2009-06-22T12:27Z

Tack för all hjälp :)

Men jag löste det själv

```
<div id="codeOutput" style="margin-bottom: 10px; color: #666;"></div>
<script type="text/javascript">
function showDelay() {
	var somediv = document.getElementById('codeOutput');
	somediv.innerHTML = random()+"<br />";
}

function random(){
	var randIt = Math.random();
	var string = new Array();
	
	randIt = randIt * 10;
	randIt = Math.floor(randIt);
	
	string[0] = "#get file -p, if(isset)-777";
	string[1] = "#list file->content()";
	string[2] = "#query table(accounts) + SQLinjection, put result->file -w";
	string[3] = "#save file /var/home/bank$id";
	string[4] = "#inject query($sql)";
	string[5] = "#transfer this->amount($cents)";
	string[6] = "#error 98f1vklALgpg!";
	string[7] = "#exec file->dir(var/home/bank$id)";
	string[8] = "#sweep this->($tracks)";
	string[9] = "#grab this->info(bank$id)";
	
return string[randIt];
}

var delayTime = 0
var rows = 10

for (i=0; i<rows; i++){
	setTimeout("showDelay()", delayTime);
	delayTime += 150
}
</script>
```

Permalänk: https://www.webforum.nu/p/2191186

---

Tråden på webben: https://www.webforum.nu/amne/javascript/179076-sakta-ner-loop
