Mediawiki 的 api 中的数据问题可能是 js 语法 第一个例子第二个例子

问题描述

我在脚本中使用 this page标记Mediawiki JS 的片段:

 const params = {
        action: "parse",page: stronaDyskusji,prop: "wikitext",section: index_sekcji,};
    const api = new mw.Api();

    api.get(params).done((data) => {
       console.log(data.parse.wikitext["*"]);
    });

一切正常,我可以在控制台中看到数据。但是当我想那样做的时候 为了处理数据,它返回 undefined。

var zwrot;
    const params = {
        action: "parse",};
    const api = new mw.Api();

    api.get(params).done((data) => {
        zwrot = data.parse.wikitext["*"];
    });
    console.log(zwrot);

你能告诉我为什么或给我文章链接,这样我就可以学习如何处理这种数据吗?

解决方法

api.get().done() 可能是异步的

意味着它需要一个回调函数或者它返回一个需要解析的promise。在您的情况下,该函数采用回调函数,一旦 api.get().done() 完成处理,该函数就会被调用。回调通常用于在异步操作完成后继续执行代码(如本例)。

第一个例子

api.get(params).done((data) => {
  console.log(data.parse.wikitext["*"]);
});

在您的第一个代码示例中,您正在回调函数中进行登录,这意味着它会在 api.get().done() 完成后登录。

第二个例子

var zwrot;
api.get(params).done((data) => {
  zwrot = data.parse.wikitext["*"];
});
console.log(zwrot);

在您的第二个示例中,您试图在回调函数被触发之前记录 zwart 的值。因此,尚未为 zwart 分配任何值。所以它记录 undefined

(阅读有关 asynchronous 的更多信息)