Running patterns X amount of times

  1. removed delay(5000) as EVERY_N_MILLISECONDS should be in a loop so used a while loop
  2. changed hue--; to hue = hue - 6; so the difference int the color can be noticed
  3. placed your code inside EVERY_N_MILLISECONDS

try the code below

#include <FastLED.h>
#define DATA_PIN 3
#define NUM_LEDS 32
#define NUM_PATTERN1 4
#define NUM_PATTERN2 1
CRGB leds[NUM_LEDS];

void fadeall() {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i].nscale8(120);
  }
}

void setup() {
  Serial.begin(9600);
  Serial.println("resetting");
  LEDS.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
  LEDS.setBrightness(200);
}

void pattern1() {

  uint8_t hue = 0;
  for (int i = 0; i < NUM_LEDS; i++) {
    uint8_t mappedHue = map(i, 0, NUM_LEDS - 1, 1, 250);
    leds[i] = CHSV(mappedHue, 255, 255);
    FastLED.show();
    fadeall();
    delay(70);
  }
  delay(500);
}
void pattern2() {
  uint8_t hue = 0;
  /* GERRY MOD
  for (int i = 0; i < NUM_LEDS; i++) {
    //leds[i] = CHSV(hue, 255, 255);
    leds[i] = CHSV(hue, 255, 255);
  }
  EVERY_N_MILLISECONDS(125) {
    hue--;
  }
  FastLED.show();
  delay (5000);
  */
  //GERRY MOD
  unsigned long int prevTime = millis();
  while (millis() - prevTime < 5000) {
    EVERY_N_MILLISECONDS(125) {
      hue = hue - 6;   // 255 / 5000 * 125
      for (int i = 0; i < NUM_LEDS; i++) {
        //leds[i] = CHSV(hue, 255, 255);
        leds[i] = CHSV(hue, 255, 255);
      }
      FastLED.show();
    }
  }
  
}
void loop() {
  for (int i = 0; i < NUM_PATTERN1; i++) {
    pattern1();
  }

  for (int i = 0; i < NUM_PATTERN2; i++) {
    pattern2();
  }
}