私は、MediaWiki APIをクエリし、最初のクエリの結果ごとにもう一度クエリを実行し、コンソール上で「第2レベル」クエリの結果を表示する(動作する)Wikipediaユーザスクリプトを持っています(Firefox 52.0/Linuxの):いくつかのMediaWiki APIリクエストの結果をどのように組み合わせるのですか?
mw.loader.using([ 'mediawiki.api', 'mediawiki.ForeignApi' ]).done(function() {
var api = new mw.Api();
api.get({
action: 'query',
meta: 'globaluserinfo',
guiprop: 'merged'
}).done(function (data) {
data.query.globaluserinfo.merged.forEach(function(element, index, array) {
let url = element.url;
var remoteapi = new mw.ForeignApi(url + '/w/api.php');
[mw.config.get('wgNamespaceIds').user, mw.config.get('wgNamespaceIds').user_talk].forEach(function(element, index, array) {
remoteapi.get({
action: 'query',
list: 'allpages',
apprefix: data.query.globaluserinfo.name,
apnamespace: element
}).done(function (data2) {
for(var j = 0; j < data2.query.allpages.length; j++)
console.log(url + '/wiki/' + data2.query.allpages[j].title);
});
});
});
});
});
私は今組み合わせ]ダイアログボックスで、個々のコンソール出力を交換したい(有料・mw.loader.using('oojs-ui-windows').done(function() { OO.ui.alert('All results: ' + results); });
)。
つまり、すべてのAPIクエリが完了したときに1つのコールバックを実行し、それらのすべての結果をアクセス/集約/結合したいとします。それはどうやってできますか?
おそらく 'apprefix 'に'/'を追加することになります。 – Tgr
これは、 "メイン"ユーザページ/ユーザトークページ、e。 g。 https://en.wikipedia.org/wiki/User_talk:Tim.landscheidt。 (このスクリプトの目的は「私」のユーザースペースのすべてのページを一覧表示することですが、普遍的なソリューションでは同じ「プレフィックス」を持つ他のユーザーを除外する必要がありますが、「Tim.landscheidt」では誤認はあまりありません。 - )。) –