Я отлаживал сложную программу, написанную на Javascript. Мне нужно следить за сменой большой матрицы. Не удобно видеть каждый элемент в матрице, используя Chrome Inspect Element. Итак, я хочу записать данные в текстовый файл. Я нашел FileSystem API и терминал.
Я включил FileSystem API в свой проект со ссылкой на проект терминала FileSystem. И я определяю глобальную переменную для хранения fs.root. Я хочу передать эту переменную в мою программу при отладке, чтобы я мог вывести данные в текстовый файл с помощью этого fs.root.
Я запрашиваю файловую систему:
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler); // 5MB
Но функция onInitFs выглядит как функция ответа на сообщение, которая вызывается очень поздно. Даже после "onLoad = 'MyFun ();'". Итак, я не знаю, куда поместить свою собственную функцию, чтобы убедиться, что переменная "fs.root" определена. Прямо сейчас я поставил «MyFun ()» везде, все сгенерирует ошибку, что «fs.root» не определен, так как функция «onInitFs» не вызывается.
Я проверил последовательность вызова:
------------- main.html
<html>
<header>
<script type='text/javascript' src='MyFun.js'></script>
<script type='text/javascript' >
console.log('01Position');
function onInitFs(fs)
{
aGlobalFsRoot = fs.root;
console.log('04Position');
}
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, onInitFs, errorHandler);
</script>
</header>
<body onLoad="MyFun();">
<script>
console.log('02Position');
</script>
</body>
</html>
------------- MyFun.js
var aGlobalFsRoot;
function MyFun()
{
console.log('03Position');
// want to use "aGlobalFsRoot" to dump some matrix data, but it is not defined, which means "onInitFs()" is still not called.
}
Итак, в окне консоли Chrome Inspect Element:
01Position
02Position
03Position
04Position
могу ли я включить функцию "onInitFun ()", которая называется более ранней, чем "MyFun ()". Или Где я должен поставить "MyFun ()", чтобы он мог быть вызван позже, чем "OnInitFun ()". Я не хочу, чтобы пользователь нажимал одну кнопку, так как MyFun просто выполняет предварительную обработку при загрузке. Могу ли я сгенерировать одно сообщение, поэтому «MyFun ()» будет вызван позже, чем «onInitFs ()»?