If the streamFunction object passed into readLocalFile has a property called callbackQ, then anything meant to be done after the zip part (i.e. file in the zip) has been read will be added as a function to this property.

This means a zip part can be read in chunks using setTimeOut and the UI updated in the 'gaps'. The streamFunction object must then call all the functions attached to .callbackQ when the final chunk has been read. If no .callbackQ property is found, jszip just does everything as per normal.

Obviously, the code calling jszip must add anything else to be done after the zip part has been fully read as a function to .callbackQ in the streamFunction or it goes wrong.

Multiple zip parts cant be read at once, because if the chunks get mixed up, variables start being assigned wrongly. One zip part must be read fully before reading another zip part is started.