У меня есть четыре тега на странице; их необходимо включать или отключать в зависимости от назначенной роли пользователя. (Я сбрасываю значение href и уменьшаю непрозрачность отключенных элементов.) Сейчас существует 50% вероятность того, что не все элементы будут оценены при загрузке страницы (но они успешно оценятся при перезагрузке). В разработке мне пришлось использовать вложенный метод setTimeout(), чтобы заставить их вообще выполнять оценку. Что я могу сделать, чтобы ускорить выполнение кода? Возможно, его не следует запускать внутри $(document).ready()? Неужели мой подход неправильный? ТИА за помощь!
const arrTiles = [[8, 'EnvironmentalHealthSafety'], [9, 'SalesAndFinance'], [18, 'PrivacyAndSafeguards'], [25,'HumanResources']];
const checkTileAccess = (tile) => {
if (!user().hasRole(tile[0])) {
$('#healthscorefactors').find('a[href*=\"' + tile[1] + '\"]').prop('href', '#').css({ 'opacity': '0.33', 'cursor': 'default' });
$('#healthscorefactors').find('a[href*=\"' + tile[1] + '\"]').find('img.tooltip').off('click').removeAttr('title');
}
};
$(document).ready(function () {
if (!user().hasAccess('CNAdmin') && !user().hasAccess('Admin') && !user().hasAccess('ChannelPartner') && !user().hasAccess('Supervisor')) {
let k = 0;
setTimeout(function () {
checkTileAccess(arrTiles[k]);
k++;
setTimeout(function () {
checkTileAccess(arrTiles[k]);
k++;
setTimeout(function () {
checkTileAccess(arrTiles[k]);
k++;
setTimeout(function () {
checkTileAccess(arrTiles[k]);
}, 300)
}, 300)
}, 300);
}, 300);
}
})
Подробнее здесь: https://stackoverflow.com/questions/785 ... run-faster