在p5.js中使用Datamuse API中的JSON数据时遇到麻烦

时间:2019-06-21 11:02:06

标签: javascript api p5.js

因此,我想构建一个非常简单的Web应用程序,其中用户输入一些文本,然后从同一文本创建一个段落。段落中的每个单词都在span标记内,因此当用户将鼠标悬停在其上时,该单词的同义词会显示在控制台上。

我很确定导致问题的代码部分是:

var lookupLink;
var data;
function preload(){
    lookupLink = 'https://api.datamuse.com/words?ml=';
}
function changeWord(){
    data = loadJSON(lookupLink+this.html())
    var index = floor(random((Object.keys(data).length)));
    console.log(data[index].word);
    //the above console.log gives an error.
}

以下是完整的代码,以防万一:https://pastebin.com/ViNZ1jse

它没有记录该单词,而是显示:

Uncaught TypeError: Cannot read property 'word' of undefined
    at p5.Element.changeWord (sketch.js:39)

我猜这是因为当我尝试记录它的属性之一时,数据对象尚未完成加载,但是我不知道该如何解决。 编辑:哦,我忘了提 还有一个问题,我可以从https://api.datamuse.com/words?ml=链接加载数据,而不能从https://api.datamuse.com/words?rel_syn=链接加载数据。

1 个答案:

答案 0 :(得分:1)

https://p5js.org/reference/#/p5/loadJSON

loadJson会收到一个回调,该回调将在加载json时执行。 因此,我认为这将起作用:

loadJSON(lookupLink+this.html(), function(data) {
  var index = floor(random((Object.keys(data).length)));
  console.log(data[index].word);
})