Я запускаю этот блок асинхронного кода на первой странице, которая загружается на мой сайт (страница индекса), и задаю результирующие данные в глобальной переменной для использования на других страницах сайта.Проблема в том, что на других страницах сайта, когда я пытаюсь получить доступ к данным, возвращенным и сохраненным в глобальной переменной, я ничего не могу сделать с данными, пока они не будут полностью загружены, поэтому я получаю ошибки, которые говорят, что данные 'не определено.Мне нужен способ убедиться, что асинхронный код завершен, а данные доступны, чтобы их можно было использовать без ошибок.
var apiInitData = new Object();
// This block is asynchronous and sets the data in apiInitData
bn.push(["init", function() {
bn.apiId.init({
loginSuccess: function (event){
var params = {cross_app: true};
bn.api.callApi("/access/list", params, function(data) {
apiInitData.data = data.data;
});
}
});
}]);
На других страницах, которые загружаются после страницы индекса, я пытаюсь получить доступ к этой глобальной переменной:
console.log("apiInitData: ", apiInitData);
Это возвращает данные в apiInitData.Я могу просмотреть объект в моей консоли.
Однако, если я попытаюсь напечатать длину этих данных в следующей строке:
console.log("length", apiInitData.data.length);
Я получу ошибку:
UncaughtTypeError: Невозможно прочитать свойство 'length' с неопределенным значением
Я знаю, это связано с тем, что переменная apiInitData ожидает завершения асинхронного кода, но я не знаю, что можно сделать, чтобы дождаться его.Я читал о функциях обратного вызова, но чем больше я читаю, тем больше я запутался и просто не вижу, что здесь нужно сделать.
Как я могу использовать данные в apiInitData на других страницах сайтатолько после полной выборки блока асинхронного кода?