问题描述
我在脚本中使用 this page 中标记为 Mediawiki JS 的片段:
一切正常,我可以在控制台中看到数据。但是当我想那样做的时候 为了处理数据,它返回 undefined。
你能告诉我为什么或给我文章链接,这样我就可以学习如何处理这种数据吗?
解决方法
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 的更多信息)