Gunnar Bittersmann: asynchrones JavaScript

Beitrag lesen

Folgende Situation: Zwei JSON-Dateien, die geladen werden müssen, und Code, der ausgeführt werden soll, wenn beide geladen sind. Verschachtelt sähe das so aus:

var aRequest = new Request('a.json');
var bRequest = new Request('b.json');

fetch(aRequest)
	.then(function (response) { return response.json(); })
	.then(function (aData)
	{
		fetch(bRequest)
			.then(function (response) { return response.json(); })
			.then(function (bData)
			{
				// do something with aData and bData
			});
	});

Ist aber nicht richtig asynchron. Die Dateien sollten unabhängig voneinander parallel geladen werden:

var aRequest = new Request('a.json');
var bRequest = new Request('b.json');

fetch(aRequest)
	.then(function (response) { return response.json(); })
	.then(function (aData)
	{
		// …
	});

fetch(bRequest)
	.then(function (response) { return response.json(); })
	.then(function (bData)
	{
		// …
	});

function doSomething(aData, bData)
{
	// do something with aData and bData
}

Aber was müsste dann anstelle von // … stehen, damit doSomething(aData, bData) aufgerufen wird, sobald beide JSON-Dateien geladen sind?

LLAP 🖖

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