Bash, 162 104 bytes
Modification of Zachary's answerZachary's answer on a related question, with massive improvements by manatwork:
s='-\|/'
for x in {0..100};{
printf "\rloading ${s:x%4:1} $x %%"
sleep `printf .%03d $[RANDOM%750+1]`
}
I had to look up how to do random numbers in bash.
Ungolfed / Explained
s='-\|/'
for x in {0..100}
{
# \r returns the carriage to the beginning of the current line.
# ${s:x%4:1} grabs a substring from s, at index x%4, with a length of 1.
printf "\rloading ${s:x%4:1} $x %%"
# "$RANDOM is an internal bash function that returns
# a pseudorandom integer in the range 0 - 32767."
# .%03d is a dot followed by a base-ten number formatted to 3 places,
# padded with zeros if needed.
# sleep accepts a floating point number to represent milliseconds.
sleep `printf .%03d $[RANDOM%750+1]`
}