My toddler does this too. TBH I dont worry too much about her eating enough though. She has plenty of energy, sleeps well and is gaining weight and doesn't have any specific health issues so I feel pretty confident that she's getting enough.
To avoid waste I only give a very small amount of the requested food at a time. I'm happy to give more if she finishes the first serve and wants more. If its something which will keep well like yoghurt or pasta etc I put the uneaten portion in the fridge for another time. Not in a "you'll eat this for every meal until its gone" way but if she has a bowl of yoghurt then there's not much point throwing it out and serving another bowl a few hours later when she asks again. And sometimes I end up eating her leftovers as a snack which works well too.
To avoid conflict and frustration I don't get cross with her for not eating something g she's asked for. I don't want food to be a battleground for us. I tell myself she is still learning her likes, dislikes and body's cues regarding hunger and thirst. I do set boundaries though and if she hasn't eaten something she's asked for then I don't make anything else or I'll offer one other alternative or suggest a drink instead. If this results in upset then I treat it like any other tears or tantrum - empathy, comfort and distraction :-)