dedlfix: asynchrones JavaScript

Beitrag lesen

Tach!

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

var aPromise = fetch(aRequest).then(function (response) { return response.json(); })
var bPromise = fetch(bRequest).then(function (response) { return response.json(); })

Promise.all([aPromise, bPromise]).then(function (values)
{
	var aData = values[0];
	var bData = values[1];

	// do something with aData and bData
});

Du kannst auch noch die beiden ersten then()s einsparen. DRY statt WET. response.json() ist kein asynchroner Prozess. Das kann auch im then() vom Promise.all() ausgeführt werden.

Promise.all([aPromise, bPromise]).then(function (responses) {
	var aData = responses[0].json();
	var bData = responses[1].json();

	// do something with aData and bData
});

oder wenn es separat sein soll

Promise.all([aPromise, bPromise]).then(function (responses) {
  var values = responses.map(function (response) { return response.json(); });
  // modern: const values = responses.map(response => response.json());
  // oder: const [aValue, bValue] = responses.map(response => response.json());

	var aData = values[0];
	var bData = values[1];

	// do something with aData and bData
});

dedlfix.