Felix Riesterer: asynchrones JavaScript

Beitrag lesen

Lieber Gunnar,

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

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

so wie ich das Deinem Code entnehme, müsste man jeweils prüfen, ob der andere Code auch schon da ist, um erst dann diese Code-Stelle (// …) auszuführen. Deiner Logik nach werden ja beide JSON-Daten unabhängig voneinander geladen, sodass eine ganz sicher zuletzt geladen wird, welche dann die eigentliche Abarbeitung anstoßen müsste. Und sollte ein Ladevorgang scheitern, dann ist das Ausführen ohnehin hinfällig.

Vielleicht etwas in dieser Art?

fetch(aRequest)
	.then(function (response) { return response.json(); })
	.then(function (aData)
	{
		this.jsonData = aData;

		// check if other request has already loaded
		if (bRequest.jsonData) {
				processRequests();
		}
	});

fetch(bRequest)
	.then(function (response) { return response.json(); })
	.then(function (bData)
	{
		this.jsonData = bData;

		// check if other request has already loaded
		if (aRequest.jsonData) {
				processRequests();
		}
	});

function processData () {
		// aRequest.jsonData && bRequest.jsonData
}

Oder meintest Du etwas völlig anderes?

Liebe Grüße,

Felix Riesterer.