How do Arduino-based 3D-printers control several stepper motors at the same time?
The delay() function is bad programming practice and it's unfortunate that it is taught to beginners.
  if(condition1) {                    // trigger
    t1 = millis()                     // start time
  }
  if((millis() - t1) &gt; timeDelay1) {  // elapsed time
    // do something
  }

The above code can be expanded to as many timers as you need. The rest of the program can continue to be scanned no matter how long the time delay is.