Gunnar Bittersmann: asynchrones JavaScript

Beitrag lesen

@@Orlok

Vielleicht hilft dir die Lektüre dieses und dieses Beitrags von mir bei der Entscheidungsfindung.

Weil „Variablen prinzipiell so lokal wie möglich angelegt werden sollten“ also nirgends var. Und da sämtliche Variablen ihren einmal zugewiesenen Wert behalten, überall const. So also?


const currentLanguage = document.documentElement.lang;

const urls = [
	'config/available-languages.json',
	'lib/language-names.json',
	'lib/language-names.' + currentLanguage + '.json'
];

Promise.all(
	urls.map(
		url => fetch(url).then(response => response.json())
	)
).then(values => {
	
	const [availableLanguages, languageNames, localLanguageNames] = values;
	const template = document.querySelector('#lang-menu-item');

	availableLanguages.forEach(lang => {
		
		if (lang != currentLanguage)
		{
			const clone = template.content.cloneNode(true);
			const liElement = clone.querySelector('li');
			const aElement = liElement.querySelector('a');
			
			aElement.href = '?lang=' + lang;
			aElement.hreflang = lang;
			aElement.lang = lang;
			aElement.textContent = languageNames[lang] || lang;
			liElement.title = localLanguageNames[lang] || '';
			
			template.parentNode.appendChild(clone);
		}
	});
});

LLAP 🖖

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory