Is it okay, or it does too much overhead/may cause performance issues?
Help me to find it out!
if someone can do it using a timer, please show the way how it should look like or just the logic. (Is it should change the currentFOV every N seconds, and then set the loop to true in timer?
Tick is generally frowned upon. If you can put it in a timer, you should. And you can.
Here’s a start:
Create zoom interp function
Set timer with zoom function when AimDownSights input occurs (storing TimerHandle somewhere)
Clear timer when FOV == ZoomFOV
Do the reverse to get back to normal FOV
You can find more info on timers (and timer delegates) on the UE4 documentation page. Try figuring it out on your own first, then come back if you hit a wall.