Powershell, 57 56 54 53 58 Bytes
for(;;cls){"Loading... "+"|/-\"[($a=++$a%4)];sleep -m 250}
The CLI in powershell will glitch out slightly on some computers, so it doesn't look perfect, but it's as good as I can feasibly get.
Moved $a++ into the for loop to save one byte, (no ;
)
Then moved it into the array indexer, for another 2 byte save, thanks to Roman for pointing that out.
Also saved 1 more byte (;
) by moving the Clear screen (cls
) part into the for loop..
Issue and fix pointed out by TimmyD for the infinite aspect of the question, only +5 Bytes required, changed $a++%4
into ($a=++$a%4)
so it will never go above 3.
New updated gif for the (final?) version of this answer.
for(;;cls){"Loading... "+"|/-\"[$a++%4];sleep -m 250}
for(;;){"Loading... "+"|/-\"[$a++%4];sleep -m 250;cls}
for(;;$a++){"Loading... "+"|/-\"[$a%4];sleep -m 250;cls}
for(;;){$a++;"Loading... "+"|/-\"[$a%4];sleep -m 250;cls}