Benutzer Diskussion:Reinhard Kraasch/Test1.js

aus Wikipedia, der freien Enzyklopädie

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))