The actual process of sending data to the LED strip is a blocking one… thus no Blynk communication happening. The key is to keep the process as quick as possible and rely on short (sub) timers, perhaps inside the function, to determine the frequency of the process… not any additional blocking functions like delays.
It might also be beneficial to add in a Blynk.run(); command into the colour cycle if it takes too long… experiment with best place to add such… just don’t dump them everywhere.