dbms_output does not write the the output device (screen) at all. Being a server-side process, it has no means to access the client's display device. Instead, it writes to an internal buffer. That buffer is returned to (made available to) the client only upon completion of the process that was called by the client, when processing control is passed back to the calling client. So, no, you will not see the results while process control still belongs to the pl/sql procedure - the whole procedure, not just the loop.
And even then, it is up to the client on what to do with that buffer. In sqlplus, we direct it to display the buffer contents with use of the 'set serveroutput on' command. Other clients may have other means to direct it to process the message buffer. Still other clients have no means at all and simply ignore it.