Benutzer Diskussion:Reinhard Kraasch/Test1.js

aus Wikipedia, der freien Enzyklopädie
< Benutzer Diskussion:Reinhard Kraasch
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 12. Januar 2021 um 00:41 Uhr durch imported>Reinhard Kraasch(1574) (Reinhard Kraasch verschob die Seite Benutzer Diskussion:Reinhard Kraasch/Test.js nach Benutzer Diskussion:Reinhard Kraasch/Test1.js, ohne dabei eine Weiterleitung anzulegen).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Zu deiner Frage in der Technik-Werkstatt

Die Callback-Funktion von .done wird verzögert aufgerufen, sobald der Server geantwortet hat. Das Skript läuft aber in der Zwischenzeit weiter. Ohne alert läuft es also schon in die nächste Schleife, bevor die erste Server-Rückmeldung überhaupt da ist. Lösen kannst du das Ganze, indem du die nächste Seite erst anforderst, nachdem die vorherige übermittelt wurde und du den "cont"-Wert kennst:

mw.loader.using( 'mw.Api' ).then( function () {
	var tt = '', cont = '', cms,
	i = 0,
	params = {
		action: 'query', 
        list: 'categorymembers',
		format: 'json',
        cmtitle: 'Kategorie:Benutzer:Verifiziert',
        cmlimit: 10,
        cmcontinue: ''
	},
	api = new mw.Api();
	request_next_page();

	function request_next_page() {
		if (i < 4) {
			params.cmcontinue = cont;
			api.get(params).done(process_data);
			i++;
		} else {
			var h1 = document.getElementById("firstHeading");
			if (h1.innerText == "Benutzer:Reinhard Kraasch/Test1") {
				var c = document.getElementById("content");
				c.innerText = tt;
			}
		}
	}

	function process_data (data) {
		cms = data.query.categorymembers;
		cont = data.continue.cmcontinue;
		tt += "\n" + cont;
		cms.forEach( function (cat) {
			tt += "\n" + cat.title;
		} );
		request_next_page();
	}
})

(nicht signierter Beitrag von Tkarcher (Diskussion | Beiträge) 01:29, 2. Jan. 2021 (CET))