Я написал небольшое приложение, которое использует новые FILE API и FormData для загрузки файла.
Я бы хотел видеть, сколько времени заняло загрузка файла. Так что я использовал XMLHTTPRequest.upload события «loadstart» и «load» для запуска секундомера и его остановки при загрузке файла.
Однако, когда размер загружаемого файла небольшой, я заметил, что событие «load» запускается до завершения события «loadstart» (перекрытие). Так что вызывает следующую последовательность выполнения, как показано в журналах ниже. Вы можете видеть, что функция stopWatch () вызывается до вызова startWatch, что вызывает ошибку.
Они должны исполнять исключительно то, что я предполагал, пока не увидел этот инцидент.
Я использую версию FireFox 4Beta 6 для этого тестирования.
17:55:25 INFO - xhr loadstart = 0
17:55:26 INFO - xhr load = 0
17:55:26 INFO - percent = 100
17:55:26 INFO - _stopWatch()
17:55:26 INFO - xhr loadstart = end
17:55:26 INFO - _startWatch() = true
Так что я в замешательстве, согласно моему размышлению в любой момент времени, только когда оператор JS может быть выполнен.
Также я не уверен, что это правильное поведение? Я имею в виду код блока загрузки, выполняющийся до выполнения блока кода loadstart. И если его правильное поведение, то как я должен убедиться, что событие загрузки не срабатывает до того, как загрузка не завершится? для предотвращения перекрытия.