I am trying to incorporate IoT to my embedded system project. I would call it soft real-time embedded system project. 
But because of these '*LAZY*' lines,

 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 // Start the server
 server.begin();
 Serial.println("Server started");
 if (!client) {
 return; // Wait until the client sends some data
 }
 Serial.println("new client");
 while (!client.available()) {
 delay(1);
 }

The rest of the embedded system project has become so slow. If I don't put any of those lines, there will be obnoxious side-effects. How can I run this code along my actual embedded system project and still get done the soft real-time job?

[Edited] Full code:

 #include <ESP8266WiFi.h>
 
 const char* ssid = "Linux"; // SSID i.e. Service Set Identifier is the name of your WIFI
 const char* password = "0123456789"; // Your Wifi password, in case you have open network comment the whole statement.
 
 int ledPin = 13; // GPIO13 or for NodeMCU you can directly write D7 
 WiFiServer server(80); // Creates a server that listens for incoming connections on the specified port, here in this case port is 80.
 
 void setup() {
 Serial.begin(115200);
 delay(10);
 
 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, LOW);
 
 // Connect to WiFi network
 Serial.println();
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
 
 WiFi.begin(ssid, password);
 
 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 
 // Start the server
 server.begin();
 Serial.println("Server started");
 
 // Print the IP address
 Serial.print("Use this URL to connect: ");
 Serial.print("http://");
 Serial.print(WiFi.localIP()); //Gets the WiFi shield's IP address and Print the IP address of serial monitor
 Serial.println("/");
 
 }
 
 void loop() {
 // Check if a client has connected
 WiFiClient client = server.available();
 if (!client) {
 return;
 }
 
 // Wait until the client sends some data
 Serial.println("new client");
 while(!client.available()){
 delay(1);
 }
 
 // Read the first line of the request
 String request = client.readStringUntil('\r');
 Serial.println(request);
 client.flush();
 
 // Match the request
 
 int value = LOW;
 if (request.indexOf("/LED=ON") != -1) {
 digitalWrite(ledPin, HIGH);
 value = HIGH;
 }
 if (request.indexOf("/LED=OFF") != -1) {
 digitalWrite(ledPin, LOW);
 value = LOW;
 }
 
 // Set ledPin according to the request
 //digitalWrite(ledPin, value);
 
 // Return the response
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println(""); // do not forget this one
 client.println("<!DOCTYPE HTML>");
 client.println("<html>");
 
 client.print("Led pin is now: ");
 
 if(value == HIGH) {
 client.print("On");
 } else {
 client.print("Off");
 }
 client.println("<br><br>");
 client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
 client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />"); 
 client.println("</html>");
 
 delay(1);
 Serial.println("Client disconnected");
 Serial.println("");
 
 }