How to I wait for a file to finish download in start()?

My game reads certain values from a data file to setup the game.

void Start ()
	{
		// load the file
		var finalPath =UnityEngine.Application.dataPath + filePath;
		if (UnityEngine.Application.isEditor || !UnityEngine.Application.isWebPlayer)
		{
			finalPath = "file://" + finalPath;
		}
		
		StartCoroutine(loader.Load(finalPath, OnFileLoaded));
	}

How do I prevent the Start() of other components to run till the data file has been finished?

I’m not sure what “best practice” is, but a simple solution is to have those components that you want to wait be in the disabled state by default, and then only enable them in your OnFileLoaded callback after the file has finished loading.