Currently, I'm using `setTimeout()` to pause a `for` loop on a huge list so that I can add some styling to the page. For instance,

Eg: <http://imdbnator.com/process?id=wtf&redirect=false>

**What I use setTimeOut for:**

I use `setTimeout()` to add images,text and css progress bar ([Why doesn't Progress Bar dynamically change unlike Text?](https://stackoverflow.com/questions/30285185/why-doesnt-progress-bar-dynamically-change-unlike-text])[2](http://www.cleartrip.com/flights/results?from=BOM&to=MAA&depart_date=31/07/2015&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&sd=1435219163624&page=loaded&view=list)). 

Clearly, as you can see it is quite painful for a user to just browse through the page and hover over a few images. It gets extremely laggy. Is there any any workaround to this?

**My FOR Loop:**

Each `for` loop makes an ajax request on the background to a PHP API. It definitely costs me some efficiency there but how do all other websites pull it off with such elegance? I mean, I've seen websites show a nice loading image with no user interference while it makes an API request. While I try to do something like that, I have `set a time-out` everytime.

Is that they use better Server-Client side interaction languages like the **node.js** that I've heard?

Also, I'e thought of a few alternatives but run into other complications. I would greatly appreciate if you can help me on each of these possible alternatives.

**Method 1:**

Instead of making an AJAX call to my PHP API through jQuery, I could do a complete server side script altogether. But then, the problem I run into is that I cannot make a good Client Side Page (as in my current page) which updates the progress bar and adds dynamic images after each of the item of the list is processed. Or is this possible?

**Method 2:** (Edited)

Like one the useful answers below, I think the biggest problem is the server API and client interaction. Websockets as suggested by him look promising to me. Will they necessarily be a better fix over a setTimeout? Is there any significant time difference in lets say I replace my current 1000 AJAX requests into a websocket?

Also, I would appreciate if there is anything other than websocket that is better off than an AJAX call.

How do professional websites get around with a fluidic server and client side interactions? 

**Edit 1:** Please explain how professional websites (such as [http://www.cleartrip.com](http://www.cleartrip.com/flights/results?from=BOM&to=MAA&depart_date=31/07/2015&adults=1&childs=0&infants=0&class=Economy&airline=&carrier=&intl=n&sd=1435219163624&page=loaded&view=list) when you are requesting for flight details) provide a smooth client side while processing the server side.

**Edit 2**: As @Syd suggested. That is something that I'm looking for.I think there is a lot of delay in my current client and server interaction. Websockets seem to be a fix for that. What are the other/ best ways for improving server cleint interaction apart from the standard AJAX?