What is the best practice for asynchronously loading component data?

Don’t do that!
It is dangerous to create your own threads. If you start working with data tables or other services, you could have nasty side effects. Plus they could be killed at will without notifying you.

The correct way is to use background tasks.

The difference is that the server will take care of keeping everything safe when concurrent threads access the same services.

This sound almost like you are doing the row['fetched'] = False on the client. If this is not the case, then you are doing the right thing.

If you are really changing one column of one row from the client, you are:

  1. Doing something unsafe. Your form has access to that row → anyone can do anything on your row, and perhaps on your database. It’s always safer not to give write access to the client (I don’t even give read access)
  2. You are doing things the slow way. You are already calling the server to fetch something, the server should set that value during the same call. It would be much faster (I hope that’s what you are already doing)